Tệp này chứa văn bản unicode hai chiều có thể được giải thích hoặc biên dịch khác với những gì xuất hiện dưới đây. Để xem xét, hãy mở tệp trong một trình soạn thảo cho thấy các ký tự Unicode ẩn. Tìm hiểu thêm về các ký tự unicode hai chiều
fromcryptography.hazmat.backendsimportdefault_backend cryptography.hazmat.backends import default_backend | |
Fromcryptography.hazmat.primitivesimporthashes, đệm cryptography.hazmat.primitives import hashes, padding | |
fromcryptography.hazmat.primitives.asymmetricimportec cryptography.hazmat.primitives.asymmetric import ec | |
fromcryptography.hazmat.primitives.kdf.hkdfimportHKDF cryptography.hazmat.primitives.kdf.hkdf import HKDF | |
fromcryptography.hazmat.primitives.ciphersimportcodes, thuật toán, chế độ cryptography.hazmat.primitives.ciphers import Cipher, algorithms, modes | |
fromsecretsimporttoken_bytes secrets import token_bytes | |
ClassDiffiehellman: DiffieHellman: | |
def__init __ [tự]: __init__[self]: | |
self.diffiehellman = ec.Generate_private_key [ec.secp384r1 [], default_backend []].diffieHellman = ec.generate_private_key[ec.SECP384R1[], default_backend[]] | |
self.public_key = self.diffiehellman.public_key [].public_key = self.diffieHellman.public_key[] | |
self.iv = token_bytes [16].IV = token_bytes[16] | |
Defencrypt [self, public_key, bí mật]: encrypt[self, public_key, secret]: | |
Shared_key = self.diffiehellman.exchange [ec.ecdh [], public_key] = self.diffieHellman.exchange[ec.ECDH[], public_key] | |
derive_key = hkdf [ = HKDF[ | |
Thuật toán = băm.sha256 [],=hashes.SHA256[], | |
Chiều dài = 32,=32, | |
Muối = Không,=None, | |
thông tin = không có,=None, | |
backend = default_backend []=default_backend[] | |
] .Derive [Shared_key]derive[shared_key] | |
AES = Mật mã [thuật toán. = Cipher[algorithms.AES[derived_key], modes.CBC[self.IV], backend=default_backend[]] | |
người mã hóa = aes.encryptor [] = aes.encryptor[] | |
padder = padding.pkcs7 [128] .padder [] = padding.PKCS7[128].padder[] | |
padded_data = padder.update [secret.encode []] +padder.finalize [] = padder.update[secret.encode[]] + padder.finalize[] | |
returnEncryptor.Update [padded_data] +encryptor.finalize [] encryptor.update[padded_data] + encryptor.finalize[] | |
defdecrypt [self, public_key, secret, iv]: decrypt[self, public_key, secret, iv]: | |
Shared_key = self.diffiehellman.exchange [ec.ecdh [], public_key] = self.diffieHellman.exchange[ec.ECDH[], public_key] | |
derive_key = hkdf [ = HKDF[ | |
Thuật toán = băm.sha256 [],=hashes.SHA256[], | |
Chiều dài = 32,=32, | |
Muối = Không,=None, | |
thông tin = không có,=None, | |
backend = default_backend []=default_backend[] | |
] .Derive [Shared_key]derive[shared_key] | |
AES = Mật mã [thuật toán. = Cipher[algorithms.AES[derived_key], modes.CBC[iv], backend=default_backend[]] | |
người mã hóa = aes.encryptor [] = aes.decryptor[] | |
padder = padding.pkcs7 [128] .padder [] = decryptor.update[secret] + decryptor.finalize[] | |
padded_data = padder.update [secret.encode []] +padder.finalize [] = padding.PKCS7[128].unpadder[] | |
returnEncryptor.Update [padded_data] +encryptor.finalize [] unpadder.update[decrypted_data] + unpadder.finalize[] | |
defdecrypt [self, public_key, secret, iv]: = "Hello World!" | |
AES = Mật mã [thuật toán. = DiffieHellman[] | |
decryptor = aes.decryptor [] = DiffieHellman[] | |
decrypted_data = decryptor.update [bí mật] +decryptor.finalize [] = bob.encrypt[alice.public_key, text] | |
Unpadder = padding.pkcs7 [128] .Unpadder [][encrypted_message] | |
returnUnpadder.Update [Decrypted_data] +Unpadder.finalize [] = alice.decrypt[bob.public_key, encrypted_message, bob.IV] | |
Text = "Hello World!"[decrypted_message] |