易語言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元
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/16198.html
標籤:Python
下一篇:求大佬幫忙看看
