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)
熱門文章
- 
url="https://www.twse.com.tw/exchangeReport/STOCK_DAY?response=json&date=20220330&stockNo=2330"
 - 
連續複利
 - 
請用Random產生20個0~99的奇數(可重複),然後排序
 - 
py3 cpp Line sweep解Leetcode 3346 Maximum Frequency of an Element After Performing Operations I 使用 line sweep不用排序,可得線性解 [Py3解請進]
 - 
C++ Py3 計數排序與partial sum解Leetcode 2300 Successful Pairs of Spells and Potions Portions的極大值小於等於10萬是可進行記數排序的關鍵,既然可以採用記數排序,後面的二元搜尋也可以透過part...
 - 
Py3 C++計數bitmask與2 pointers速解Leetcode2273 Find Resultant Array After Removing Anagrams 字串長度最長也只有10,四個bits一組,用bitmask解題 ----- The maximum le...
 - 
輸入公元n年,輸出"平年" "閏年"
 - 
Py3 C++ C 2pointer速解Leetcode 11Container With Most Water [Py3 code請進]
 
沒有留言:
張貼留言