Đây là một bài tập trong mã hóa khóa đối xứng an toàn, được triển khai trong Python thuần túy [chỉ được sử dụng các thư viện tích hợp], được mở rộng từ BO ZHU's [//about.bozhu.me] triển khai AES-128 tại // github. com/bozhu/aes-pythonimport aes, os
key = os.urandom[16]
iv = os.urandom[16]
encrypted = aes.AES[key].encrypt_ctr[b'Attack at dawn', iv]
print[aes.AES[key].decrypt_ctr[encrypted, iv]]
# b'Attack at dawn'
Có cái gì trong hộp vậy
- Các triển khai AES-128, AES-122 và AES-256 trong Python thuần túy [rất chậm, nhưng hoạt động]. Kết quả đã được kiểm tra so với tiêu chuẩn NIST [//csrc.nist.gov/publications/fips/fips197/fips-197.pdf]
- Chế độ CBC cho AES với PKCS#7 Padding [bây giờ cũng là PCBC, CFB, OFB và CTR nhờ @righthandabacus!]
encrypt
vàdecrypt
Chức năng bảo vệ dữ liệu tùy ý bằng mật khẩu
Lưu ý: Việc thực hiện này không chống lại các cuộc tấn công kênh bên.
encrypt
và decrypt
Mặc dù đây là một bài tập, các chức năng encrypt
và decrypt
sẽ cung cấp bảo mật hợp lý cho các tin nhắn được mã hóa. Nó đảm bảo dữ liệu được giữ bí mật [sử dụng AES], các khối được mã hóa lại với nhau [CBC], cùng một thông báo được mã hóa hai lần sẽ có các mã hóa khác nhau [muối] chống lại vũ phu [PBKDF2].
Thuật toán như sau:
salt