AES算法这个AES加密的主要漏洞就在于这些条件。 首先,AES加密有一些参数
私钥:加密时使用私钥,解密时需要相同的私钥
明文:需要加密的参数
模式: aes加密常用的是ECB和CBC模式。 (我只使用这两种模式。 还有其他模式。 )
iv偏移:此参数在ECB模式下不是必需的,在CBC模式下是必需的
这些参数的条件:
私钥:必须是16位字节、24位字节或32位字节。 (python3字符串是unicode编码,因此需要encode才能转换为字节数据。 ) ) ) ) ) ) ) ) ) ) )。
明文:字节长度必须是16位的倍数
用python3的简单方法实现:
from crypto.cipherimportaesimportbase 64 password=' 1234567890123456 ' #私钥text='1234567890123456' #需要加密的内容model=aeel model ),并为AES对象en_text=AES.encrypt ) text )加密明文print ) en_text ) python3创建字节码和字符编码
例如:
st1=b’12345678’
st2=“12345678”
其中st1是字节码,st2是字符编码,字符串。 那么,计算如何保存他们。 对于字节代码,每个字节占8个字节,st1占8个字节的长度,顺序是直接写入,即写入1个ascii代码,然后写入2个ascii代码。
st2是字符串,计算在保存字符串时首先对其进行编码。 另一方面,Python3的默认编码方式是Unicode编码方式utf-8,该编码方式正好与ascii编码方式重叠,所以两者的存储方式相同,但其他编码方式例如utf-16或
python3 bytes和字符串的相互旋转1、 字符串旋转bytesstringtobyteseg : ' 0123456789 abcdef 0123456789 abcdef ' b ' 0123456789 abcdef 0123456789 abcdef ' 0123456789 3360 reture 编码=' utf8 ' ) 2、 bytes转换字符串bytestostringeg : b ' 0123456789 abcdef 0123456789 abcdef ' ' 0123456789 abcdef 0123456789 abcdef 0123456789 3360 reture 如何查看编码=' utf8 ' )字节内容ST1=b'1234567890'print(ST1 )结果为b'1234567890'print(ST1.hex ) )结果为很多人都在考虑生成类似1462587569853625 '的随机数字符串,并将该字符串作为密钥。 计算机的编码字符使用UTF-8。 其实在那之前有Ascii。 打开二进制编码就知道错误了。 正确的方法是使用随机字节。 python3.9中添加了新的函数randbytes。 感谢狗说的强大的python。