Kaynağa Gözat

clean: remove no-use ecc_aes.py (#2426)

tags/0.5.5
takatost 1 yıl önce
ebeveyn
işleme
a0ec7de058
No account linked to committer's email address
1 değiştirilmiş dosya ile 0 ekleme ve 82 silme
  1. 0
    82
      api/libs/ecc_aes.py

+ 0
- 82
api/libs/ecc_aes.py Dosyayı Görüntüle

@@ -1,82 +0,0 @@
from Crypto.Cipher import AES
from Crypto.Hash import SHA256
from Crypto.PublicKey import ECC
from Crypto.Util.Padding import pad, unpad


class ECC_AES:
def __init__(self, curve='P-256'):
self.curve = curve
self._aes_key = None
self._private_key = None

def _derive_aes_key(self, ecc_key, nonce):
if not self._aes_key:
hasher = SHA256.new()
hasher.update(ecc_key.export_key(format='DER') + nonce.encode())
self._aes_key = hasher.digest()[:32]
return self._aes_key

def generate_key_pair(self):
private_key = ECC.generate(curve=self.curve)
public_key = private_key.public_key()

pem_private = private_key.export_key(format='PEM')
pem_public = public_key.export_key(format='PEM')

return pem_private, pem_public

def load_private_key(self, private_key_pem):
self._private_key = ECC.import_key(private_key_pem)
self._aes_key = None

def encrypt(self, text, nonce):
if not self._private_key:
raise ValueError("Private key not loaded")

# Generate AES key using ECC private key and nonce
aes_key = self._derive_aes_key(self._private_key, nonce)

# Encrypt data using AES key
cipher = AES.new(aes_key, AES.MODE_ECB)
padded_text = pad(text.encode(), AES.block_size)
ciphertext = cipher.encrypt(padded_text)

return ciphertext

def decrypt(self, ciphertext, nonce):
if not self._private_key:
raise ValueError("Private key not loaded")

# Generate AES key using ECC private key and nonce
aes_key = self._derive_aes_key(self._private_key, nonce)

# Decrypt data using AES key
cipher = AES.new(aes_key, AES.MODE_ECB)
padded_plaintext = cipher.decrypt(ciphertext)
plaintext = unpad(padded_plaintext, AES.block_size)

return plaintext.decode()


if __name__ == '__main__':
ecc_aes = ECC_AES()

# Generate key pairs for the user
private_key, public_key = ecc_aes.generate_key_pair()
ecc_aes.load_private_key(private_key)
nonce = "THIS-IS-USER-ID"

print(private_key)

# Encrypt a message
message = "Hello, this is a secret message!"
encrypted_message = ecc_aes.encrypt(message, nonce)
print(f"Encrypted message: {encrypted_message.hex()}")

# Decrypt the message
decrypted_message = ecc_aes.decrypt(encrypted_message, nonce)
print(f"Decrypted message: {decrypted_message}")

# Check if the original message and decrypted message are the same
assert message == decrypted_message, "Original message and decrypted message do not match"

Loading…
İptal
Kaydet