python的AES加密解密,pythonAES加密解密,需要安装pythonCr


需要安装pythonCrypto:```python

!/usr/bin/env python

-- coding: utf-8 --

from Crypto.Cipher import AESimport base64PADDING = '\0'

PADDING = ' '

pad_it = lambda s: s+(16 - len(s)%16)*PADDING
key = '1234567812345678'iv = '1234567812345678'source = 'Test String'generator = AES.new(key, AES.MODE_CBC, iv)crypt = generator.encrypt(pad_it(source))
cryptedStr = base64.b64encode(crypt)print cryptedStrgenerator = AES.new(key, AES.MODE_CBC, iv)recovery = generator.decrypt(crypt)print recovery.rstrip(PADDING)```

注意python下需要用'\0'来填充,如果是空格来填充,python加密得到的字符串会跟其他语言不同。另外注意generator在加密的 时候使用过,解密的时候需重新生成再解密,否则解密失败。最后得到的字符串,在python控制台看到尾部是多个NUL这样的东西,要这样 recovery.rstrip(PADDING)去除掉才是原始字符串。

可以看到aes加密的中间结果是byte[]类型,直接new String(byte[])会看不到有意义的中间结果,这里用的是base64,是因为各个语言都有这样的支持。在同个语言内,也有bytesToHexString这样的方式。

跨语言加解密的要求是:AES/CBC/ZeroPadding 128位模式,key和iv一样,编码统一用utf-8。不支持ZeroPadding的就用NoPadding.

评论关闭