admin管理员组文章数量:1589967
使用Python对文件进行AES算法的加密和解密
AES算法简介
高级加密标准, 它是一种对称加密算法,AES只有一个密钥,这个密钥既用来加密,也用于解密。
AES加密方式有五种:ECB, CBC, CTR, CFB, OFB。
从安全性角度推荐CBC加密方法,本文介绍了CBC加密方法的python实现。
CBC加密需要一个十六位的key(密钥)和一个十六位iv(偏移量)
Python依赖包
python 在 Windows下使用的是pycryptodome 模块
python 在 Linux下使用的是pycrypto模块
from Crypto.Cipher import AES
BS = AES.block_size # 块大小
处理文件
1. 加密文件
def encrypt(data, key, iv):
pad = lambda s: s + (BS - len(s) % BS) * chr(BS - len(s) % BS).encode('utf-8')
cipher = AES.new(key, AES.MODE_CBC, iv)
data = cipher.encrypt(pad(data))
return data
2. 解密文件
def decrypt(data, key, iv):
if len(data) <= BS:
return data
unpad = lambda s : s[0:-s[-1]]
cipher = AES.new(key, AES.MODE_CBC, iv)
data = unpad(cipher.decrypt(data))
return data
3. 参数说明
data: 文件的二进制数据
key: 秘钥,需要是编码的bytes,如utf-8编码
In [3]: key = "password"
In [4]: key.encode('utf-8')
Out[4]: b'password'
iv: 偏移量,同key
需要是编码的bytes
4. 使用说明
pad和unpad分别是填充函数和逆填充函数。因为AES加密对加密文本有长度要求,必须是block_size的倍数
版权声明:本文标题:AES加密文件 内容由热心网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:https://m.elefans.com/xitong/1728074698a1144338.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论