一个纯蟒蛇实现著名算法

des的Python项目详细描述


versionlicense

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"

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
Java例外。Lang.Stringindexoutofboundsexception索引超出范围(0)   java Spring引导Freemarker从2.2.0升级失败   重构Java反模式名称?包含对象的对象包含。。。等   用java处理JDBC可能出现的死锁的最佳方法   java无法访问主线程上的数据库,因为它可能会在很长一段时间内锁定UI   java如何将固定大小的画布包装在边框窗格中的滚动窗格居中?   java解析xsd文件后得到空结果   在html页面中表示XML文件的java   socketjava对象流   sql Java越界异常数据库   JavaJBoss7.1.1不会在Mavericks上启动   Twincat ADS事件驱动读取在一段时间后停止工作(Java)   java MyBatis使用生成的ID插入所有   Mojave上缺少MacOS Java控制面板   JavaGuice:如果多次注入相同的依赖项,是否注入了该依赖项的相同实例?