M2Crypto public_decrypt (block, padarg) выполняет расшифровку или проверку? - PullRequest
1 голос
/ 29 ноября 2011

Я получил код Python, который, кажется, использует открытый ключ для расшифровки данных.Данные, вероятно, зашифрованы с использованием соответствующего закрытого ключа.(Я не уверен в этом, потому что шифрование с закрытым ключом обычно называется подписью).

Приведенный ниже код Python работает нормально, если у нас есть соответствующий файл открытого ключа:

def decryptUsingPubKey(b64encData):

    dcdData = base64.b64decode(b64encData)
    block = dcdData[0:512]
    rsaObj = M2Crypto.RSA.load_pub_key(keyFile)
    padarg = M2Crypto.RSA.pkcs1_padding
    decData = rsaObj.public_decrypt(block, padarg)

Что на самом деле делает метод public_decrypt(block, padarg)?Расшифровывает ли он какие-то зашифрованные данные или просто подтверждает это?

И какова его альтернатива в C #?

1 Ответ

0 голосов
/ 30 ноября 2011

Не зная библиотеки M2Crypto (но немного разбираясь в криптографии), похоже, что функция public_decrypt является просто оболочкой для функции RSA_public_decrypt OpenSSL , низкого уровня RSA работа .

Это редко полезно само по себе, но оно используется внутри для проверки подписи.

Поскольку ключ дешифрования является общедоступным, его нельзя использовать для конфиденциальности, а чтобы сделать из него настоящую схему подписи (для действительно коротких сообщений), вам также понадобится хорошая схема заполнения. Для более длинных сообщений вам нужно объединить их с хеш-функцией.

Я бы не рекомендовал использовать его (и соответствующую функцию RSA_private_encrypt), и я не вижу причин, по которым библиотека M2Crypto может его выставить.

...