python AES加密解密

來源:互聯網
上載者:User

標籤:aes   python   加密   解密   

AES加密資料塊分組長度必須為128位元,密鑰長度可以是128位元、192位元、256位元中的任意一個(如果資料區塊及密鑰長度不足時,會補齊)。AES加密有很多輪的重複和變換。大致步驟如下:1、密鑰擴充(KeyExpansion),2、初始輪(Initial Round),3、重複輪(Rounds),每一輪又包括:SubBytes、ShiftRows、MixColumns、AddRoundKey,4、最終輪(Final Round),最終輪沒有MixColumns。

AES的加密解密方法如下,其中password只能是16,24或32位的字串。

# encoding:utf-8from Crypto.Cipher import AESfrom Crypto import Randomdef encrypt(data, password):    bs = AES.block_size    pad = lambda s: s + (bs - len(s) % bs) * chr(bs - len(s) % bs)    iv = Random.new().read(bs)    cipher = AES.new(password, AES.MODE_CBC, iv)    data = cipher.encrypt(pad(data))    data = iv + data    return datadef decrypt(data, password):    bs = AES.block_size    if len(data) <= bs:        return data    unpad = lambda s : s[0:-ord(s[-1])]    iv = data[:bs]    cipher = AES.new(password, AES.MODE_CBC, iv)    data  = unpad(cipher.decrypt(data[bs:]))    return data if __name__ == '__main__':data = 'hello world'password = '1111111111111111' #16,24,32位長的密碼encrypt_data = encrypt(data, password)print 'encrypt_data:', encrypt_datadecrypt_data = decrypt(encrypt_data, password)print 'decrypt_data:', decrypt_data

如果提示沒有Crypto導致執行失敗,可以使用pip install pycrypto安裝相應模組解決問題。

執行結果如下:




著作權聲明:本文為博主原創文章,未經博主允許不得轉載。

python AES加密解密

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.