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

kboypkb發表於2021-09-09

易語言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加密原理

我沒有看懂,但是對方給了原始碼,因此直接使用作者提供的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)

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/1916/viewspace-2826247/,如需轉載,請註明出處,否則將追究法律責任。

相關文章