Python2 解密易语言DES加密的密文

570 阅读2分钟

易语言DES加密研究背景

易语言与后端的Python进行通信,数据希望使用DES加密,因此涉及到易语言DES加密数据,然后使用Python的DES算法进行解密。

虽然这个需求很常见,但确发现网上文章相关文章不多,因此将我总结的整理出来,供给大家参考

易语言DES加密实现:

找了很多,网上各种第三方DES加密和解密的库,但是发现好用的很少,最后发现,其实易语言自身就支持这个加密算法

函数原型如下:

调用格式: 〈字节集〉 加密数据 (字节集 字节集数据,文本型 密码文本,[整数型 加密算法]) - 数据操作支持库一->数据加解密

英文名称:Encrypt

加密一段字节集数据,返回加密后的结果字节集。如果失败,返回空字节集。本命令为初级命令。

参数<1>的名称为“字节集数据”,类型为“字节集(bin)”。为命令提供所需的字节集数据。

参数<2>的名称为“密码文本”,类型为“文本型(text)”。

参数<3>的名称为“加密算法”,类型为“整数型(int)”,可以被省略。指定具体使用的加密算法,可以为以下常量值之一:1: #DES算法; 2: #RC4算法。加密和解密必须使用相同的算法,有关算法的具体说明请参阅有关文献。如果本参数被省略,则默认值为1,即DES算法。

操作系统需求: Windows、Linux

使用举例:

加密函数(到字节集(“abc"), "wodekey", #DES算法)

非常简单,但是加密后数据是字节集不是很友好,因此转换成 十六进制表示

字节集_字节集到十六进制 (加密数据 (到字节集 (”abc“, “test” , #DES算法))

Python解密易语言的DES密文

初看很简单的问题,但是测试发现 python根本解不开易语言实现的DES密文

经过苦苦追寻,最终 看到有人分析过 易语言的DES加密原理 易语言DES加密原理

我没有看懂,但是对方给了源代码,因此直接使用作者提供的python代码就可以了

(注:原作者的代码 有一行bug i = i + 1 if i < 8 else 0 需要将 8改成 7否则会报错)

但是发现 这代码是Python3的,我的环境是Python2 死活是不行

需要将上述代码转成python2的

参考了:

python2 字节集 转换成十六进制 - 参考

python2 将十六进制 转成字节集 - 参考

核心修改的代码:

ba[i] =int(format(ord(b[i]),'0>8b')[::-1],2)

加入官方Q群交流

官方交流Q群

源代码50元