这是js aes加密解密的python实现,一些网站加密可能用到。废话不多,直接上代码。
----转自我的知乎
'''
##加密参数:1 后面接明文进行加密
python cipher.py 1 whoname
##解密参数:0 后面接密文进行解密
python cipher.py 0 R9mzAKkT7fkeeicfelQusg==
'''
import base64
import sys
from Crypto.Cipher import AES
from Crypto.Util.Padding import pad, unpad
keys = ["abcdefghijklmnop",] #16位密钥
ivs = ["abcdefghijklmnop",] #16位偏移量
k_s = 0
iv_s = 0
def getDAES(data):
key=bytes(keys[k_s],encoding='utf8')
iv=bytes(ivs[iv_s],encoding='utf8')
cipher = AES.new(key,AES.MODE_CBC,iv)
print(f'明文:{data}')
plaintext = base64.b64decode(bytes(data,encoding='utf8'))
msg = unpad(cipher.decrypt(plaintext),AES.block_size,'pkcs7')
result=str(msg,encoding='utf8')
return result
def getAES(data):
key=bytes(keys[k_s],encoding='utf8')
iv=bytes(ivs[iv_s],encoding='utf8')
cipher = AES.new(key,AES.MODE_CBC,iv)
print(f'密文:{data}')
plaintext = bytes(data,encoding='utf8')
msg = cipher.encrypt(pad(plaintext,AES.block_size,'pkcs7'))
result=str(base64.b64encode(msg).decode('utf8'))
return result
#test
if __name__ == '__main__':
data=sys.argv[2]
if sys.argv[1] == '0':
r=getDAES(data)
else:
r=getAES(data)
print(f'结果:{r}')