一个纯蟒蛇实现著名算法
des的Python项目详细描述
DES(数据加密标准)
著名的des算法的纯python实现,支持python 2和3。
安装
使用pip
:
$ pip install des
或者手动下载存档文件并在提取里面的内容后运行命令:
$ python setup.py install
用法
首先,通过传递加密/解密密钥来定义DesKey
对象。钥匙的长度应该是8、16或24。算法将自动为您选择。
请注意,在python 3中,键应该写为bytes
。
fromdesimportDesKeykey0=DesKey(b"some key")# for DESkey1=DesKey(b"a key for TRIPLE")# for 3DES, same as "a key for TRIPLEa key fo"key2=DesKey(b"a 24-byte key for TRIPLE")# for 3DESkey3=DesKey(b"1234567812345678REAL_KEY")# for DES, same as "REAL_KEY"
通过调用其方法is_single()
或is_triple()
,您可能知道密钥是用于des还是3des算法。
key0.is_single()# -> Truekey1.is_triple()# -> Truekey2.is_single()# -> Falsekey3.is_triple()# -> False
其次,通过调用DesKey
对象中的方法encrypt()
来加密消息,或者通过调用decrypt()
来解密消息。
注意,在python 3中,这些消息应该写成bytes
。
key0.encrypt(b"any long message")# -> b"\x14\xfa\xc2 '\x00{\xa9\xdc;\x9dq\xcbr\x87Q"
默认情况下,使用ecb模式。通过将参数initial
作为initial value传递,可以启用cbc模式。
参数可以是长度为8的bytes
对象,也可以是使用big endian的整数。
key0.encrypt(b"any long message",initial=0)# -> b"\x14\xfa\xc2 '\x00{\xa9\xb2\xa5\xa7\xfb#\x86\xc5\x9b"key0.encrypt(b"any long message",initial=b"\0"*8)# same as above
des算法要求消息的长度为8的倍数。
默认情况下,要加密/解密的消息的长度由用户确定。
您可以选择打开pkcs5 padding mode(通过传递带有truthy值的参数padding
),告诉python在加密之前进行填充。
key0.encrypt(b"abc",padding=True)# -> b"%\xd1KU\x8b_A\xa6"
在使用pkcs5 padding解密时,消息的长度仍然需要是8的倍数。但是在解密之后,python将丢弃填充字符。
key0.decrypt(b"%\xd1KU\x8b_A\xa6",padding=True)# -> b"abc"