欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Python AES加密實例解析

 更新時間:2018年01月18日 13:55:39   作者:kwsy2008  
這篇文章主要介紹了Python AES加密實例解析,具有一定借鑒價值,需要的朋友可以參考下

本文主要是對aes加密技術做一個簡要分析,然后使用Python實現(xiàn),具體介紹如下。

AES,是美國聯(lián)邦政府采用的一種加密技術,AES有幾個模式,其中CBC模式是公認的安全性最好的模式,被TLS所采用。

加密與解密雙方需確定好key,key的長度可以是16位,24位,32位中的一個,分別對應了不同的算法。

如果key的長度是是16位的,那么被加密的明文長度必須是16的整數(shù)倍,但實際使用中,這么巧的事情很難發(fā)生,因此就需要對明文進行填充,最常用的方式就是填充\0,等到解密的時候,再把解密出來的明文右側的\0全部去掉。你也許會關心,如果我明文最右側原本就是一堆的\0,那么這么搞,豈不是要出問題么,是滴,確實會出問題,但這樣的明文用來做什么呢?你想多了,這樣的明文你這輩子恐怕都不會遇到。

下面看一段python示例代碼,演示如何使用AES加密技術進行加密和解密

#coding=utf-8 
''''' 
加密的一方和解密的一方必須提前確定好key值 
''' 
from Crypto.Cipher import AES 
from binascii import b2a_hex, a2b_hex 
 
class MyCrypto(): 
  def __init__(self, key): 
    self.key_len = len(key) 
    if not self.key_len == 16 and not self.key_len == 24 and not self.key_len == 32: 
      raise Exception("length of key is wrong") 
    self.key = key 
    self.mode = AES.MODE_CBC  #這種模式更加安全 
 
  def encrypt(self, text): 
    ''''' 
      被加密的明文長度必須是key長度的整數(shù)倍,如果不夠,則用\0進行填充 
      轉成16進制字符串,是因為避免不可見的ascii在顯示的時候搗亂 
    ''' 
    cryptor = AES.new(self.key, self.mode, self.key) 
    count = len(text) 
    add = self.key_len - (count % self.key_len) 
    text = text + ('\0' * add) 
    self.ciphertext = cryptor.encrypt(text) 
    return b2a_hex(self.ciphertext) 
 
 
  def decrypt(self, text): 
    ''''' 
      解密后需注意,加密時有可能填充\0,因此要去掉右側的\0 
    ''' 
    cryptor = AES.new(self.key, self.mode, self.key) 
    plain_text = cryptor.decrypt(a2b_hex(text)) 
    return plain_text.rstrip('\0') 
 
 
if __name__ == '__main__': 
  mc = MyCrypto("kwsy_zds20160822") 
  e = mc.encrypt("張東升") 
  d = mc.decrypt(e) 
  print e,d 

總結

以上就是本文關于Python AES加密實例解析的全部內容,希望對大家有所幫助。感興趣的朋友可以繼續(xù)參閱本站其他相關專題,如有不足之處,歡迎留言指出。感謝朋友們對本站的支持!

相關文章

  • python編寫暴力破解zip文檔程序的實例講解

    python編寫暴力破解zip文檔程序的實例講解

    下面小編就為大家分享一篇python編寫暴力破解zip文檔程序的實例講解,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-04-04
  • Python創(chuàng)建對稱矩陣的方法示例【基于numpy模塊】

    Python創(chuàng)建對稱矩陣的方法示例【基于numpy模塊】

    這篇文章主要介紹了Python創(chuàng)建對稱矩陣的方法,結合實例形式分析了Python基于numpy模塊實現(xiàn)矩陣運算的相關操作技巧,需要的朋友可以參考下
    2017-10-10
  • python中取絕對值簡單方法總結

    python中取絕對值簡單方法總結

    在本篇內容里小編給大家整理的是關于python中取絕對值簡單方法,需要的朋友們可以學習下。
    2020-07-07
  • 打包遷移Python?env環(huán)境的三種方法總結

    打包遷移Python?env環(huán)境的三種方法總結

    平常工作中可能遇到python虛擬環(huán)境遷移的場景,總結了如下幾個方法,下面這篇文章主要給大家介紹了關于打包遷移Python?env環(huán)境的三種方法,需要的朋友可以參考下
    2024-08-08
  • Selenium基于PIL實現(xiàn)拼接滾動截圖

    Selenium基于PIL實現(xiàn)拼接滾動截圖

    這篇文章主要介紹了Selenium基于PIL實現(xiàn)拼接滾動截圖,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2020-04-04
  • NDArray 與 numpy.ndarray 互相轉換方式

    NDArray 與 numpy.ndarray 互相轉換方式

    這篇文章主要介紹了NDArray 與 numpy.ndarray 互相轉換方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-05-05
  • 如何用python免費看美劇

    如何用python免費看美劇

    在本篇文章里小編給大家整理的是關于如何用python免費看美劇的方法內容,需要的朋友們可以學習下。
    2020-08-08
  • Python使用Bokeh庫實現(xiàn)炫目的交互可視化

    Python使用Bokeh庫實現(xiàn)炫目的交互可視化

    Bokeh是一個用于創(chuàng)建交互式可視化圖形的強大Python庫,它不僅易于使用,而且功能強大,適用于各種數(shù)據可視化需求,本文將介紹Bokeh庫的繪圖可視化基礎入門,需要的可以了解下
    2024-03-03
  • Python 40行代碼實現(xiàn)人臉識別功能

    Python 40行代碼實現(xiàn)人臉識別功能

    很多人都認為人臉識別是一項非常難以實現(xiàn)的工作,看到名字就害怕,然后心懷忐忑到網上一搜,看到網上N頁的教程立馬就放棄了。其實如果你不是非要深究其中的原理,只是要實現(xiàn)這一工作的話,人臉識別也沒那么難。今天我們就來看看如何在40行代碼以內簡單地實現(xiàn)人臉識別。
    2017-04-04
  • 用python爬取電腦壁紙實例代碼

    用python爬取電腦壁紙實例代碼

    大家好,本篇文章主要講的是用python爬取電腦壁紙實例代碼,感興趣的同學趕快來看一看吧,對你有幫助的話記得收藏一下
    2022-02-02

最新評論