Hướng dẫn python generate aes key - python tạo khóa aes

Đâ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 (http://about.bozhu.me) triển khai AES-128 tại https: // github. com/bozhu/aes-python

Nội dung chính ShowShow

  • Có cái gì trong hộp vậy
  • encrypt và decrypt
  • Chúng tôi không đủ trách nhiệm
  • Thực hiện AES trong Python
  • Tập giấy
  • Suy nghĩ cuối cùng
  • Làm thế nào để bạn thực hiện mã hóa AES trong Python?
  • Làm cách nào để thực hiện một chương trình mã hóa đơn giản trong Python?
  • AES không thể bẻ khóa?
  • Làm thế nào để bạn giải mã AES trong Python?

import 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

  • encrypt và decrypt
  • Chúng tôi không đủ trách nhiệm
  • Thực hiện AES trong Python

Tập giấy

encrypt và decrypt

Chúng tôi không đủ trách nhiệm

Thực hiện AES trong Python

salt <- random(16)                                                        (1)
key_aes, key_hmac, iv <- PKBDF2(master_key, salt)                         (2)
HMAC(salt + E_key_aes(message, iv)) + salt + E_key_aes(message, iv)       (3+)
  1. Tập giấy

  2. Suy nghĩ cuối cùng

  3. Làm thế nào để bạn thực hiện mã hóa AES trong Python?

  4. Làm cách nào để thực hiện một chương trình mã hóa đơn giản trong Python?

  5. AES không thể bẻ khóa?

Làm thế nào để bạn giải mã AES trong Python?

  • 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 (http://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!)

  • pip install pycrypto
    0 và
    pip install pycrypto
    1 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.

Mặc dù đây là một bài tập, các chức năng

pip install pycrypto
0 và
pip install pycrypto
1 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:

16 Byte ngẫu nhiên của muối được trích xuất từ ​​bộ tạo số ngẫu nhiên an toàn của hệ thống (thường /dev /urandom)>Houseparty scandal that has taken place during the quarantine. Houseparty was an excellent time killer app during the long days of the quarantine, it gathered friends and allowed them to play mini-games while video chatting with each other on their phones, all of this provided freely by Houseparty themselves. It was all fun and games till vast numbers of Netflix and Spotify accounts started to get hacked.

Khóa chính đã cho được kéo dài và mở rộng bởi PKBDF2-HMAC (SHA256) bằng cách sử dụng muối từ 1), để tạo khóa AES, khóa HMAC và IV (vectơ khởi tạo cho CBC).

Chúng tôi không đủ trách nhiệm

Thực hiện AES trong Pythonencrypted with a a secure algorithm, such as AES.

Thực hiện AES trong Python

Tập giấypycrypto library, which can be done via pip with the following command:

pip install pycrypto

mà nên chạy mà không có lỗi. Khi Pycrypto được cài đặt, hãy tạo tệp Python và viết phần sau để nhập mọi thứ chúng ta cần:pycrypto is installed, create a python file and write the following to import everything we need:

Bây giờ chúng tôi sẽ tạo một lớp cho mật mã AES của chúng tôi với hàm tạo sau:

Hãy đi bộ nhanh qua hàm tạo, nó nhận được một khóa có thể có độ dài. Sau đó, chúng tôi tiến hành tạo ra một hàm băm 256 bit từ phím đó. Một hàm băm về cơ bản là một định danh duy nhất có độ dài nhất định, 32 ký tự trong trường hợp này, của bất kỳ đầu vào nào bất kể độ dài của nó. Điều này cho phép bạn có thể chuyển hàm xây dựng tên hoặc một cụm từ và nó sẽ tạo ra một khóa 256 bit duy nhất cho mật mã của bạn. Chúng tôi cũng đặt

pip install pycrypto
4 thành 128, đó là kích thước khối của AES.

Trước khi chúng tôi tiến hành xác định các phương thức

pip install pycrypto
0and
pip install pycrypto
1 cho lớp AECHIPHER của chúng tôi, trước tiên hãy tạo ra

salt <- random(16)                                                        (1)
key_aes, key_hmac, iv <- PKBDF2(master_key, salt)                         (2)
HMAC(salt + E_key_aes(message, iv)) + salt + E_key_aes(message, iv)       (3+)
2 và
salt <- random(16)                                                        (1)
key_aes, key_hmac, iv <- PKBDF2(master_key, salt)                         (2)
HMAC(salt + E_key_aes(message, iv)) + salt + E_key_aes(message, iv)       (3+)
3Methods. Ngoài ra, người mới bắt đầu trong Python có thể học hỏi từ các hướng dẫn Python tốt nhất để tăng cường học tập của họ.

Tập giấy

salt <- random(16)                                                        (1)
key_aes, key_hmac, iv <- PKBDF2(master_key, salt)                         (2)
HMAC(salt + E_key_aes(message, iv)) + salt + E_key_aes(message, iv)       (3+)
2Method nhận được ____15 để được mã hóa và thêm một số byte cho văn bản là bội số của 128 bit. Số này được lưu trữ trong
salt <- random(16)                                                        (1)
key_aes, key_hmac, iv <- PKBDF2(master_key, salt)                         (2)
HMAC(salt + E_key_aes(message, iv)) + salt + E_key_aes(message, iv)       (3+)
6. Sau đó, trong
salt <- random(16)                                                        (1)
key_aes, key_hmac, iv <- PKBDF2(master_key, salt)                         (2)
HMAC(salt + E_key_aes(message, iv)) + salt + E_key_aes(message, iv)       (3+)
7we tạo ra ký tự đệm của chúng tôi và
salt <- random(16)                                                        (1)
key_aes, key_hmac, iv <- PKBDF2(master_key, salt)                         (2)
HMAC(salt + E_key_aes(message, iv)) + salt + E_key_aes(message, iv)       (3+)
8 sẽ chứa thời gian ký tự đó
salt <- random(16)                                                        (1)
key_aes, key_hmac, iv <- PKBDF2(master_key, salt)                         (2)
HMAC(salt + E_key_aes(message, iv)) + salt + E_key_aes(message, iv)       (3+)
6. Vì vậy, chúng tôi chỉ phải thêm
salt <- random(16)                                                        (1)
key_aes, key_hmac, iv <- PKBDF2(master_key, salt)                         (2)
HMAC(salt + E_key_aes(message, iv)) + salt + E_key_aes(message, iv)       (3+)
8 ở cuối plain_text của chúng tôi để bây giờ nó là bội số của 128 bit.

Undad

Theo cách ngược lại,

salt <- random(16)                                                        (1)
key_aes, key_hmac, iv <- PKBDF2(master_key, salt)                         (2)
HMAC(salt + E_key_aes(message, iv)) + salt + E_key_aes(message, iv)       (3+)
3Method sẽ nhận được văn bản được giải mã, còn được gọi là
salt <- random(16)                                                        (1)
key_aes, key_hmac, iv <- PKBDF2(master_key, salt)                         (2)
HMAC(salt + E_key_aes(message, iv)) + salt + E_key_aes(message, iv)       (3+)
5and sẽ xóa tất cả các ký tự được thêm vào trong
salt <- random(16)                                                        (1)
key_aes, key_hmac, iv <- PKBDF2(master_key, salt)                         (2)
HMAC(salt + E_key_aes(message, iv)) + salt + E_key_aes(message, iv)       (3+)
2Method. Vì vậy, trước tiên chúng ta phải xác định nhân vật cuối cùng và lưu trữ trong
pip install pycrypto
4 bao nhiêu byte chúng ta cần cắt giảm sự kết thúc của
salt <- random(16)                                                        (1)
key_aes, key_hmac, iv <- PKBDF2(master_key, salt)                         (2)
HMAC(salt + E_key_aes(message, iv)) + salt + E_key_aes(message, iv)       (3+)
5in để giải phóng nó.

Mã hóa

Với hai phương pháp này, hãy thực hiện

pip install pycrypto
0Method

Phương pháp

pip install pycrypto
0 nhận được

salt <- random(16)                                                        (1)
key_aes, key_hmac, iv <- PKBDF2(master_key, salt)                         (2)
HMAC(salt + E_key_aes(message, iv)) + salt + E_key_aes(message, iv)       (3+)
5 sẽ được mã hóa. Đầu tiên chúng tôi đệm đó
salt <- random(16)                                                        (1)
key_aes, key_hmac, iv <- PKBDF2(master_key, salt)                         (2)
HMAC(salt + E_key_aes(message, iv)) + salt + E_key_aes(message, iv)       (3+)
5 để có thể mã hóa nó. Sau khi chúng tôi tạo ra một
pip install pycrypto
00 ngẫu nhiên mới với kích thước của một khối AES, 128bits. Bây giờ chúng tôi tạo ra mật mã AES của chúng tôi với
pip install pycrypto
01 với
pip install pycrypto
02 của chúng tôi, trong chế độ
pip install pycrypto
03 và với
pip install pycrypto
00 vừa được tạo của chúng tôi. Bây giờ chúng tôi gọi
pip install pycrypto
0function của
pip install pycrypto
06 của chúng tôi, chuyển nó
salt <- random(16)                                                        (1)
key_aes, key_hmac, iv <- PKBDF2(master_key, salt)                         (2)
HMAC(salt + E_key_aes(message, iv)) + salt + E_key_aes(message, iv)       (3+)
5 của chúng tôi được chuyển đổi thành bit. Đầu ra được mã hóa sau đó được đặt sau
pip install pycrypto
00 của chúng tôi và được chuyển đổi trở lại từ các bit thành các ký tự có thể đọc được.

Giải mã

Bây giờ chúng ta có thể mã hóa văn bản, nhưng tôi chắc chắn rằng chúng ta muốn có thể giải mã nó:

Để giải mã, chúng ta phải quay lại tất cả các bước được thực hiện trong

pip install pycrypto
0Method. Đầu tiên, chúng tôi chuyển đổi
pip install pycrypto
10 của chúng tôi thành bit và trích xuất
pip install pycrypto
00, đây sẽ là 128 bit đầu tiên của
pip install pycrypto
10 của chúng tôi. Giống như trước đây, bây giờ chúng tôi tạo ra một mật mã AES mới với khóa của chúng tôi, trong chế độ CBC và với
pip install pycrypto
00 được trích xuất. Bây giờ chúng tôi gọi phương thức
pip install pycrypto
1 của
pip install pycrypto
06 của chúng tôi và chuyển đổi nó thành văn bản từ các bit. Chúng tôi loại bỏ phần đệm bằng

salt <- random(16)                                                        (1)
key_aes, key_hmac, iv <- PKBDF2(master_key, salt)                         (2)
HMAC(salt + E_key_aes(message, iv)) + salt + E_key_aes(message, iv)       (3+)
3 và đó là nó!

Lớp

pip install pycrypto
17 cuối cùng sẽ trông như sau:

Suy nghĩ cuối cùng

Bây giờ bạn có thể mã hóa và giải mã dữ liệu của mình! Nếu bạn muốn chơi với AES hay chỉ kiểm tra xem việc triển khai của bạn có chính xác không, hãy thử mật mã AES trực tuyến này. Nếu bạn bị thu hút về cách AES hoạt động, hãy thoải mái vượt qua bài viết của tôi về nó.

Như mọi khi, hãy liên hệ với tôi nếu bạn cần. Tất cả các mã được tìm thấy trong hướng dẫn này là miễn phí trên GitHub.

Tôi hy vọng tất cả các bạn tìm thấy hướng dẫn này hữu ích, mã hóa hạnh phúc!

Cảm ơn bạn.

Làm thế nào để bạn thực hiện mã hóa AES trong Python?

Sử dụng AES để mã hóa và giải mã trong Python Pycrypto..

Tạo khóa ..

Vector khởi tạo ..

Mã hóa bằng AES ..

Giải mã với AES ..

Mã hóa tệp với AES. 6.1. Viết kích thước của tệp. 6.2. Lưu vectơ khởi tạo. 6.3. Điều chỉnh khối cuối cùng ..

Giải mã tệp bằng cách sử dụng AES ..

Làm cách nào để thực hiện một chương trình mã hóa đơn giản trong Python?

Steps:...

Nhập thư viện RSA ..

Tạo khóa công khai và riêng tư với RSA. ....

Mã hóa chuỗi thành chuỗi byte ..

Sau đó mã hóa chuỗi byte bằng khóa công khai ..

Sau đó chuỗi được mã hóa có thể được giải mã bằng khóa riêng ..

Khóa công khai chỉ có thể được sử dụng để mã hóa và riêng tư chỉ có thể được sử dụng để giải mã ..

AES không thể bẻ khóa?

AES 256 hầu như không thể xuyên thủng bằng các phương pháp vũ lực.Mặc dù khóa DES 56 bit có thể bị nứt trong vòng chưa đầy một ngày, AES sẽ mất hàng tỷ năm để phá vỡ bằng cách sử dụng công nghệ điện toán hiện tại.Tin tặc sẽ thật ngu ngốc khi thậm chí thử loại tấn công này.Tuy nhiên, không có hệ thống mã hóa hoàn toàn an toàn.. While a 56-bit DES key can be cracked in less than a day, AES would take billions of years to break using current computing technology. Hackers would be foolish to even attempt this type of attack. Nevertheless, no encryption system is entirely secure.

Làm thế nào để bạn giải mã AES trong Python?

Tạo khóa AES.....

Tạo mật mã.....

Mã hóa/giải mã dữ liệu.....

ECB (Chế độ Sách mã điện tử) (AES-ECB) ....

Chế độ CBC (Chuỗi chuỗi khối mật mã) (AES-CBC) ....

Chế độ CFB (Phản hồi mật mã) (AES-CFB) ....

OFB (Chế độ Phản hồi đầu ra) (AES-OFB) ....

Chế độ CTR (Bộ đếm) (AES-CTR).