易语言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的
核心修改的代码:
ba[i] =int(format(ord(b[i]),‘0>8b’)[::-1],2)