python AES加解密(自己摸索)
今天对接jd的一些接口,中间需要加密,那边开发人员说用DES加密方式,怎么弄都不对,最后要对方把代码发给我看看(java),最后发现是一个AES加解密的方式,晕。。。。
下面是重点
代码:
# encoding:utf-8 import base64 from Crypto.Cipher import AES class c_AES(object): @staticmethod def encrypt(data, password,mode=AES.MODE_ECB,iv="0000000000000000"): #iv的默认值就是16个0,当时这块纠结了很久,后来在网上看到有写0的,就试了试 try: bs = AES.block_size pad = lambda s: s + (bs - len(s) % bs) * chr(bs - len(s) % bs) cipher = AES.new(password, AES.MODE_ECB, iv) data = cipher.encrypt(pad(data)) return base64.b64encode(data) except: return "" @staticmethod def decrypt(data, password,mode=AES.MODE_ECB): try: data = base64.b64decode(data) #将后面的填充数据去掉 unpad = lambda s : s[0:-ord(s[-1])] cipher = AES.new(password, mode) data = unpad(cipher.decrypt(data)) return data except: return "" if __name__ == '__main__': key = '1vgerdkvtoiudfh6' #初始化密钥 data = '''{"settleId":"123", "userId":"234"}''' password = key #16,24,32位长的密码 encrypt_data = c_AES.encrypt(data, password) print 'encrypt_data:', encrypt_data decrypt_data = c_AES.decrypt(encrypt_data, password) print 'decrypt_data:', decrypt_data
博客园编辑小结:插入代码的时候,觉得没必要添加行号,因为拷贝的时候,会把行号拷贝下来,使用的时候还得删除,比较麻烦,以舒适至上。

浙公网安备 33010602011771号