Back to posts Edit this post
Copy content

27 May 21:09

from Crypto.PublicKey import RSA # Wczytaj dane binarne (np. 2048 / 8 * 2 = 512 bajtów minimum, najlepiej więcej) with open("aes.bin", "rb") as f: entropy_data = f.read() # Ustaw zmienną indeksu (globalna dla generatora) entropy_index = 0 # Definiujemy własną funkcję pseudolosową na podstawie pliku def randfunc(n): global entropy_index # Zwróć n bajtów z pliku binarnego chunk = entropy_data[entropy_index:entropy_index + n] entropy_index += n # Zabezpieczenie: zapętlamy jeśli za mało danych if len(chunk) < n: chunk += entropy_data[:n - len(chunk)] return chunk # Generuj klucz RSA key = RSA.generate(2048, randfunc=randfunc) # Zapisz klucze with open("private.pem", "wb") as f: f.write(key.export_key()) with open("public.pem", "wb") as f: f.write(key.publickey().export_key()) print("🔐 Klucze wygenerowane z entropy.bin przy użyciu niestandardowego źródła losowości.") test.py from Crypto.PublicKey import RSA from Crypto.Cipher import PKCS1_OAEP # 1. Wczytaj klucze with open("public.pem", "rb") as f: public_key = RSA.import_key(f.read()) with open("private.pem", "rb") as f: private_key = RSA.import_key(f.read()) # 2. Szyfrowanie wiadomości message = "Tajna wiadomość 123 ABC xyz!".encode('utf-8') # ✅ poprawnie cipher = PKCS1_OAEP.new(public_key) encrypted = cipher.encrypt(message) # encrypted = encrypted[:-1] + bytes([encrypted[-1] ^ 0x01]) print("🔒 Zaszyfrowana wiadomość (hex):") print(encrypted.hex()) # 3. Odszyfrowanie cipher_dec = PKCS1_OAEP.new(private_key) decrypted = cipher_dec.decrypt(encrypted) print("\n🔓 Odszyfrowana wiadomość:") print(decrypted.decode("utf-8"))

No files