python中的AES對(duì)稱加密

一、環(huán)境:windows10 /Linux + python3.6+cryptography2.3 + Crypto + pycryptodome

(Linux如果報(bào)錯(cuò)报亩,可能是缺少相應(yīng)包,pip3 install pycryptodome下載)
(Crypto 文件不同,執(zhí)行操作可能不同父晶,也許會(huì)報(bào)錯(cuò))

  • 加密

    # -*- coding: utf-8 -*
    from Crypto.Cipher import AES
    
    
    def encrypt(message):
        key = b'0123456789ABCDEF'
        cipher = AES.new(key, AES.MODE_CBC, key)
        bmessage = bytearray(message, encoding='utf-8')  
        v1 = len(bmessage)
        v2 = v1 % 16
        if v2 == 0:
            v3 = 16
        else:
            v3 = 16 - v2
        for i in range(v3):
            bmessage.append(v3)
        mi_msg = cipher.encrypt(bmessage)
        return mi_msg
    
  • 解密

    def decrypt(message):
        key = b'0123456789ABCDEF'
        cipher = AES.new(key, AES.MODE_CBC, key)
        result = cipher.decrypt(message)
        data = result[0:-result[-1]]
        return str(data,encoding='utf-8')
    
  • 驗(yàn)證

    import json
    v = json.dumps({'主機(jī)IP':'10.0.0.11','1':'1'})
    mi_data = encrypt(v)
    print('mi_data-->',mi_data)
    # mi_data--> b"\x06\x93\x845\x95\x18\xc2'e\xcfL\xd9a-p\x88\x98\xbd\x9fT\x05\x00}H\xb7qv\xd1\x92\xc3e8<\x14\xa3\xce\xd6Z\x9df\xcb\x90y\xeaR\xab8m"
    jiemi_data = decrypt(mi_data)
    print(len(jiemi_data),jiemi_data)
    # 41 {"\u4e3b\u673aIP": "10.0.0.11", "1": "1"}
    print(json.loads(jiemi_data))
     # {'主機(jī)IP': '10.0.0.11', '1': '1'}
    
二、環(huán)境:windows10 + python2.7+cryptography2.3 + Crypto
  • 解密(稍微有些不同)

    def decrypt(message):
        key = b'0123456789ABCDEF'
        cipher = AES.new(key, AES.MODE_CBC, key)
        result = cipher.decrypt(message)
        print("result-->", result)
        print('result[-1]--->', result[-1], type(result[-1]))
        print(ord(result[-1]), )
        data = result[0:-ord(result[-1])]  # 【此處不同】
        print("data-->", data)
        return data.decode('utf-8')
    

??????????????????????????????????? 學(xué)而不思則罔,思而不學(xué)則殆

三赞警、環(huán)境:Linux + python2.7+Crypto(和之前文件稍有差距)
  • 加密(稍微有些不同妓忍,解密同win_py2)

    # -*- coding: utf-8 -*
    from Crypto.Cipher import AES
      
    
    def encrypt(message):
        key = b'0123456789ABCDEF'
        cipher = AES.new(key, AES.MODE_CBC, key)
        bmessage = bytearray(message, encoding='utf-8')
        v1 = len(bmessage)
        print ('v1-->',v1)
        v2 = v1 % 16
        print ('v2-->',v2)
        if v2 == 0:
            v3 = 16
        else:
            v3 = 16 - v2
        print("v3-->",v3)
        for i in range(v3):
            bmessage.append(v3)
        print('bmessage-->',bmessage)
        final_data = bmessage.decode('utf-8')
        msg = cipher.encrypt(final_data)
        return msg
    
四、使用過程中出現(xiàn)的錯(cuò)誤:
  • OSError: Cannot load native module 'Crypto.Cipher._raw_ecb': Trying '_raw_ecb.pyd': [Error 126] (Windows愧旦,python2執(zhí)行時(shí)報(bào)錯(cuò))世剖。
    • 排查:如果有此文件,將_raw_ecb.cp36-win_amd64.pyd 文件名改為 _raw_ecb.pyd)笤虫。
  • OSError: Cannot load native module 'Crypto.Cipher._raw_ecb': Trying '_raw_ecb.cpython-34m.so' (Linux旁瘫,python3執(zhí)行時(shí)報(bào)錯(cuò))。
    • 排查:執(zhí)行 pip install pycryptodome琼蚯。
五酬凳、思考
  • 思考1:cryptography pycryptodome Crypto 的關(guān)系。
    點(diǎn)擊查看

  • 思考2:.pyd 文件 和 .so 文件 的作用遭庶。

  • 思考3:_raw_ecb.cp36-win_amd64.pyd 和 _raw_ecb.pyd 的區(qū)別及產(chǎn)生由來宁仔。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市峦睡,隨后出現(xiàn)的幾起案子翎苫,更是在濱河造成了極大的恐慌,老刑警劉巖榨了,帶你破解...
    沈念sama閱讀 210,978評(píng)論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件煎谍,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡龙屉,警方通過查閱死者的電腦和手機(jī)呐粘,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 89,954評(píng)論 2 384
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人事哭,你說我怎么就攤上這事漫雷。” “怎么了鳍咱?”我有些...
    開封第一講書人閱讀 156,623評(píng)論 0 345
  • 文/不壞的土叔 我叫張陵降盹,是天一觀的道長(zhǎng)。 經(jīng)常有香客問我谤辜,道長(zhǎng)蓄坏,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,324評(píng)論 1 282
  • 正文 為了忘掉前任丑念,我火速辦了婚禮涡戳,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘脯倚。我一直安慰自己渔彰,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,390評(píng)論 5 384
  • 文/花漫 我一把揭開白布推正。 她就那樣靜靜地躺著恍涂,像睡著了一般。 火紅的嫁衣襯著肌膚如雪植榕。 梳的紋絲不亂的頭發(fā)上再沧,一...
    開封第一講書人閱讀 49,741評(píng)論 1 289
  • 那天,我揣著相機(jī)與錄音尊残,去河邊找鬼炒瘸。 笑死,一個(gè)胖子當(dāng)著我的面吹牛寝衫,可吹牛的內(nèi)容都是我干的顷扩。 我是一名探鬼主播,決...
    沈念sama閱讀 38,892評(píng)論 3 405
  • 文/蒼蘭香墨 我猛地睜開眼竞端,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼屎即!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起事富,我...
    開封第一講書人閱讀 37,655評(píng)論 0 266
  • 序言:老撾萬榮一對(duì)情侶失蹤技俐,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后统台,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體雕擂,經(jīng)...
    沈念sama閱讀 44,104評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,451評(píng)論 2 325
  • 正文 我和宋清朗相戀三年贱勃,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了井赌。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片谤逼。...
    茶點(diǎn)故事閱讀 38,569評(píng)論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖仇穗,靈堂內(nèi)的尸體忽然破棺而出流部,到底是詐尸還是另有隱情,我是刑警寧澤纹坐,帶...
    沈念sama閱讀 34,254評(píng)論 4 328
  • 正文 年R本政府宣布枝冀,位于F島的核電站,受9級(jí)特大地震影響耘子,放射性物質(zhì)發(fā)生泄漏果漾。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,834評(píng)論 3 312
  • 文/蒙蒙 一谷誓、第九天 我趴在偏房一處隱蔽的房頂上張望绒障。 院中可真熱鬧,春花似錦捍歪、人聲如沸户辱。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,725評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽焕妙。三九已至,卻和暖如春弓摘,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背痕届。 一陣腳步聲響...
    開封第一講書人閱讀 31,950評(píng)論 1 264
  • 我被黑心中介騙來泰國(guó)打工韧献, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人研叫。 一個(gè)月前我還...
    沈念sama閱讀 46,260評(píng)論 2 360
  • 正文 我出身青樓锤窑,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親嚷炉。 傳聞我的和親對(duì)象是個(gè)殘疾皇子渊啰,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,446評(píng)論 2 348

推薦閱讀更多精彩內(nèi)容

  • 在此特此聲明:一下所有鏈接均來自互聯(lián)網(wǎng),在此記錄下我的查閱學(xué)習(xí)歷程申屹,感謝各位原創(chuàng)作者的無私奉獻(xiàn) 绘证! 技術(shù)一點(diǎn)一點(diǎn)積...
    遠(yuǎn)航的移動(dòng)開發(fā)歷程閱讀 11,087評(píng)論 12 197
  • 1-------- 走進(jìn)前端 2-------- jQuery 3-------- CSS 4-------- A...
    依依玖玥閱讀 2,319評(píng)論 0 34
  • 抽空 和自己喝杯茶 關(guān)著門 忘記自己在哪 只是喝茶 喝茶 一滴一滴地喝。
    留子堯閱讀 328評(píng)論 1 2
  • “可惡哗讥!沙缽略竟然已經(jīng)兵至涼州嚷那,說什么為前朝安寧公主報(bào)仇,朕看是他狼子野心杆煞,尋個(gè)借口罷了魏宽!” 大殿內(nèi)一片肅穆腐泻,群臣...
    就是于為閱讀 444評(píng)論 0 0
  • 時(shí)間匆匆,今天已是第五天這次是真的快要結(jié)束了队询,沒當(dāng)一天結(jié)束派桩,躺在床上,想一想這幾天發(fā)生的故事蚌斩,雖然累但卻跟這群孩...
    走馬丨閱讀 371評(píng)論 1 0