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'))
herrDeng網內搜尋
自訂搜尋
Ads
2025年5月11日 星期日
AES 256文字加密python實作
訂閱:
張貼留言 (Atom)
熱門文章
-
array ex 1, 2,3,7,8
-
明文=I'm student key=(2,15,8) 密文=?
-
統計第一作業 2, 3, 8, 9
-
請問如何用C/C++程式產生下列輸出? 1111111 2222222 3333333 4444444 5555555 6666666 7777777
-
列印課表數字代碼矩陣,以及代碼的課名 提示: 參考此連結
-
GCD(123456789,345634567)=?
-
請用C/C++ 程式計算 S=1*1+2*2+3*3+4*4+.....+20*20=?
-
請用CPU-Z軟體檢測Cache & Memory 註:快取(L1-L3: SRAM) 第一級快取(L1)–通常存取只需要幾個週期,通常是幾十個KB。 第二級快取(L2)–比L1約有2到10倍較高延遲性,通常是幾百個KB或更多。 第三級快取(L3)(不...
-
C字串練習 字串 char word[]="You win!"; 輸出為: You win! You win You wi You w You You Yo Y 給進階使用者: gets () 是個危險的函式!
沒有留言:
張貼留言