100 lines
1.6 KiB
Python
100 lines
1.6 KiB
Python
import os
|
|
from cryptography.hazmat.primitives import serialization
|
|
from cryptography.hazmat.primitives.asymmetric import x25519
|
|
from cryptography.hazmat.primitives.kdf.scrypt import Scrypt
|
|
from cryptography.hazmat.primitives.ciphers import Cipher, algorithms, modes
|
|
from cryptography.hazmat.backends import default_backend
|
|
|
|
private_key_hex = [
|
|
0xA8,
|
|
0x52,
|
|
0x05,
|
|
0xD2,
|
|
0x9F,
|
|
0x6B,
|
|
0xD4,
|
|
0x8B,
|
|
0x08,
|
|
0x64,
|
|
0x59,
|
|
0xE0,
|
|
0xAB,
|
|
0xD1,
|
|
0x06,
|
|
0x3D,
|
|
0xCE,
|
|
0xF2,
|
|
0xEA,
|
|
0xB7,
|
|
0xEE,
|
|
0x19,
|
|
0x96,
|
|
0x5A,
|
|
0xD6,
|
|
0x11,
|
|
0xE5,
|
|
0x3F,
|
|
0x5E,
|
|
0xA2,
|
|
0x9C,
|
|
0x58,
|
|
]
|
|
|
|
public_key_hex = [
|
|
0x63,
|
|
0x33,
|
|
0xA2,
|
|
0x5F,
|
|
0x48,
|
|
0xBB,
|
|
0x69,
|
|
0x8E,
|
|
0x1A,
|
|
0x90,
|
|
0x02,
|
|
0x83,
|
|
0x20,
|
|
0xD2,
|
|
0x05,
|
|
0x6A,
|
|
0xA1,
|
|
0x6E,
|
|
0x37,
|
|
0x2E,
|
|
0xDD,
|
|
0x84,
|
|
0xB4,
|
|
0x06,
|
|
0x20,
|
|
0xC8,
|
|
0xBC,
|
|
0xB6,
|
|
0x82,
|
|
0x17,
|
|
0x81,
|
|
0x51,
|
|
]
|
|
|
|
private_key_bytes = bytes(private_key_hex)
|
|
public_key_bytes = bytes(public_key_hex)
|
|
|
|
private_key = x25519.X25519PrivateKey.from_private_bytes(private_key_bytes)
|
|
|
|
public_key = x25519.X25519PublicKey.from_public_bytes(public_key_bytes)
|
|
|
|
shared_secret = private_key.exchange(public_key)
|
|
|
|
kdf = Scrypt(
|
|
salt=os.urandom(16), length=32, n=2**14, r=8, p=1, backend=default_backend()
|
|
)
|
|
aes_key = kdf.derive(shared_secret)
|
|
|
|
ciphertext = b""
|
|
nonce = b""
|
|
|
|
cipher = Cipher(algorithms.AES(aes_key), modes.GCM(nonce), backend=default_backend())
|
|
decryptor = cipher.decryptor()
|
|
decrypted_data = decryptor.update(ciphertext) + decryptor.finalize()
|
|
|
|
print("Decrypted Data:", decrypted_data)
|