Шифрование RSA

вареник с мясом?

Новичок
Автор темы
15
0
Набросал код для шифрования. Вконо ли я понимаю, что сначала я пишу текст и потом через скрипт указываю публичный ключ для шифрования и так же для дешифрования? Пишу уже зашифрованный текст и после даю закрытый ключ
 

вареник с мясом?

Новичок
Автор темы
15
0
Вопрос с ключами решен, сделал как и написал. Кто может подсказать, как правильно реализовать цифровой ключ и его проверку? Код для этого написал, выдает зашифрованный текст и подпись, но при проверке подписи пишет, что она недействительна.
 

kiaostashi

Известный
45
7
Зависимость: pycryptodome

Python:
from Crypto.Signature import pkcs1_15
from Crypto.Hash import SHA256
from Crypto.PublicKey import RSA

def generate_signature(message, private_key):
    private_key_obj = RSA.import_key(private_key)
    h = SHA256.new(message.encode())
    signature = pkcs1_15.new(private_key_obj).sign(h)
    return signature

def verify_signature(message, signature, public_key):
    public_key_obj = RSA.import_key(public_key)
    h = SHA256.new(message.encode())
    try:
        pkcs1_15.new(public_key_obj).verify(h, signature)
        return True
    except (ValueError, TypeError):
        return False

key_pair = RSA.generate(2048)
private_key = key_pair.export_key()
public_key = key_pair.publickey().export_key()

message = "blast.hk"
signature = generate_signature(message, private_key)
verified = verify_signature(message, signature, public_key)

print(f"verified: {verified}") # verified: True
 

вареник с мясом?

Новичок
Автор темы
15
0
Зависимость: pycryptodome

Python:
from Crypto.Signature import pkcs1_15
from Crypto.Hash import SHA256
from Crypto.PublicKey import RSA

def generate_signature(message, private_key):
    private_key_obj = RSA.import_key(private_key)
    h = SHA256.new(message.encode())
    signature = pkcs1_15.new(private_key_obj).sign(h)
    return signature

def verify_signature(message, signature, public_key):
    public_key_obj = RSA.import_key(public_key)
    h = SHA256.new(message.encode())
    try:
        pkcs1_15.new(public_key_obj).verify(h, signature)
        return True
    except (ValueError, TypeError):
        return False

key_pair = RSA.generate(2048)
private_key = key_pair.export_key()
public_key = key_pair.publickey().export_key()

message = "blast.hk"
signature = generate_signature(message, private_key)
verified = verify_signature(message, signature, public_key)

print(f"verified: {verified}") # verified: True
Спасибо за ответ. Я ошибочно использовал библиотеку pyrsa но и без ответа разобрался, но все равно спасибо. Есть вариант улучшить рандомизацию ключей, чтобы не было повторений?