python中cryptodome的AES
cryptodome中的AES使用
AES特性
AES為對稱加密, 使用金鑰來加密解密.
AES為分組密碼,分組密碼也就是把明文分成一組一組的,每組長度相等,每次加密一組資料,直到加密完整個明文。在AES標準規範中,分組長度只能是128位,也就是說,每個分組為16個位元組(每個位元組8位)。金鑰的長度可以使用128位、192位或256位。金鑰的長度不同,推薦加密輪數也不同。
python程式碼
from Cryptodome.Cipher import AES
from Cryptodome import Random
data = '需要加密的資料'
# 金鑰key需要為16, 24, 32長度的位元組型別資料.
# 我們使用AES-128位(16位元組)來使用.
key = b'1234567890123456' # 16bytes
# 還需要使用一個向量.
iv = Random.new().read(AES.block_size) # 生成一個長度等於AES塊大小並且不重複的金鑰向量物件.
# 使用key和iv初始化AES物件, 使用MODE_CFB模式.
aesobj = AES.new(key, AES.MODE_CFB, iv)
# 加密的資料的長度需為16的倍數, 不足16則會自動補足.
# 將金鑰向量加到加密後的密文開頭, 一起傳輸(方便後面解密).
aescrypto = iv + aesobj.encrypt(data.encode())
print(aescrypto)
# 解密需要使用Key和iv生成新的AES物件.
aesobj2 = AES.new(key, AES.MODE_CFB, aescrypto[0:16])
# 使用新的AES物件來解密.
aescrypto2 = aesobj2.decrypt(aescrypto[16:])
print(aescrypto2.decode()) # 這裡記得decode()哦
流程
1.準備好合適的key, data.
2.建立iv金鑰向量物件.
3.使用key, iv建立用於加密的AES物件.
4.使用加密的AES物件encrypt進行加密.
5.使用原有的key, iv建立用於解密的AES物件.
6.使用解密的AES物件decrypt進行解密.
可以使用binascii模組來對加密後的資料進行格式化輸出.
(ps: 遇錯得改..)
相關文章
- python中cryptodome的DESPython
- AES演算法在Python中的使用演算法Python
- ModuleNotFoundError: No module named ‘Crypto‘ ‘Cryptodome‘Error
- nodejs與javascript中的aes加密NodeJSJavaScript加密
- python AES-CBC 加密解密Python加密解密
- JAVA中AES加密和解密Java加密解密
- iOS開發中AES的加密和解密iOS加密解密
- Python AES - base64 加解密Python解密
- php中aes加密和rsa加密的區別PHP加密
- Python/Java AES 加解密方法互相轉換PythonJava解密
- PHP的AES加密類PHP加密
- AES加密加密
- AES加解密多版本(GO、JAVA、Python)實現解密GoJavaPython
- Python使用AES進行鹽值加密和解密Python加密解密
- Golang AES加密Golang加密
- AES 加密&解密加密解密
- AES加密解密加密解密
- MySQL使用AES_ENCRYPT()/AES_DECRYPT()加解密的正確姿勢MySql解密
- php ios通用的AES加密方法PHPiOS加密
- AES 演算法演算法
- AES CBC 加密解密加密解密
- Vue使用AES加密Vue加密
- VB實現AES(Rijndael)加密的方法加密
- AES-CBC 模式加密模式加密
- AES128-CMACMac
- AES加密 – iOS與Java的同步實現加密iOSJava
- AES加密演算法的JAVA實現加密演算法Java
- golang AES-CBC 加密解密Golang加密解密
- 逆向工程加密函式:AES加密函式
- JAVA AES 加密 親測可用Java加密
- MySQL 中 AES_DECRYPT 加密,如何在瀚高資料庫中使用MySql加密資料庫
- Python 中的類(中)Python
- AES 加密演算法的詳細介紹加密演算法
- DES/3DES/AES 三種對稱加密演算法在 Java 中的實現3D加密演算法Java
- Java 開發者必備:一文解決 AES 加密中的“非法金鑰大小”異常Java加密
- 十分鐘看懂AES加密加密
- nodejs常用加密方式 RSA & AESNodeJS加密
- AES加解密使用總結解密