herrDeng網內搜尋

自訂搜尋

Ads

2022年5月22日 星期日

AES 256文字加密python實作


print('安裝密碼學套件pycryptodome,使用AES256-CBC加密')

!pip install pycryptodome

from Crypto.Cipher import AES
from Crypto.Random import get_random_bytes
from Crypto.Util.Padding import pad, unpad

def printHex(xx):
  for x in xx:
    print("%02x" %(x), end=" ")
  print()

"""產生密鑰secret key與iv"""

key = get_random_bytes(256//8)
printHex(key)
iv =get_random_bytes(AES.block_size)
printHex(iv)

aes = AES.new(key, AES.MODE_CBC, iv)

"""加密"""

plain=input('請輸入你要加密的文字:\n')
m=plain.encode('utf-8')


%time cc=aes.encrypt(pad(m, AES.block_size))
printHex(cc)

"""要解密了"""

aes=AES.new(key, AES.MODE_CBC, iv)#解密時要重新取得aes
%time p1=aes.decrypt(cc)
printHex(p1)
p2=unpad(p1, aes.block_size)
printHex(p2)
print(m==p2)
print(p2.decode('utf-8'))

沒有留言:

Related Posts Plugin for WordPress, Blogger...

熱門文章