在PyCharm 2020+VirtualEnvs环境下使用如下命令,在Mac Catalina上成功安装Crypto模块:
pip3 install pycrypto
示例
'''
Just for test AES algorithm in Python
'''
import base64
from Crypto.Cipher import AES
def add_to_16(value):
while len(value) % 16 !=0:
value+='\0'
return str.encode(value)
def encryption(text):
key='China1949'
aes=AES.new(add_to_16(key), AES.MODE_ECB)
e=aes.encrypt(add_to_16(text))
e_text=str(base64.encodebytes(e), encoding='utf-8')
return e_text
def decryption(text):
key='China1949'
aes=AES.new(add_to_16(key), AES.MODE_ECB)
b=base64.decodebytes(text.encode(encoding='utf-8'))
d=str(aes.decrypt(b), encoding='utf-8').replace('\0','')
return d
if __name__=='__main__':
plain_msg='[email protected]'
en_text=encryption(plain_msg)
print("Encrypted msg: ", en_text)
de_text=decryption(en_text)
print("Decrypted msg: ", de_text)
注释:
借助base64.encodebytes(s)
方法,我们可以将使用 base64 编码数据的字符串编码为二进制形式。
Base64编码非常适合处理二进制数据在传输过程中的问题。比如,当一个文件需要在网络上进行传输时,如果直接传输二进制数据,会面临如下问题:
- 二进制数据中可能包含不可打印的字符,无法在网络上直接传输;
- 二进制数据可能会被改变或者破坏,导致传输的内容与原始内容不一致;
- 传输的数据量很大,可能会导致网络拥堵。
而Base64编码可以将二进制数据转换为可打印的字符集合,解决了上述问题。此外,Base64还常被应用于邮件附件、网页图片和XML文件的编码。
Base64编码的优点是能够将二进制数据转换为可打印的字符,适用于网络传输和数据存储。其缺点是编码后的数据比原数据大1/3左右,导致传输的数据量增加。同时,Base64编码只能将原始二进制数据转换为ASCII字符,不支持将二进制数据转换为Unicode字符。
运行结果
Encrypted msg: ekdsZjYstiSlJ9J/nVKkew/b6qo5uwKXVfgG3pLCPdQ=
Decrypted msg: [email protected]
参考
https://www.jianshu.com/p/0f35cc2f8455
https://www.imangodoc.com/dacfa7dc.html
标签:编码,AES,Catalina,传输,Python,text,Crypto,二进制,msg From: https://blog.51cto.com/zhuxianzhong/7162425