1

データの復号化に公開鍵を使用していると思われる 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#での代替は何ですか?

4

1 に答える 1

0

M2Crypto ライブラリを知らなくても (ただし、暗号化について少しは知っている)、この関数はOpenSSL のfunctionpublic_decryptの単なるラッパーであり、低レベルの RSA 操作であるように見えます。RSA_public_decrypt

これ自体はめったに役に立ちませんが、署名検証操作で内部的に使用されます。

復号化キーは公開されているため、機密保持のために使用する方法はありません。また、それから実際の署名スキーム (非常に短いメッセージの場合) を作成するには、優れたパディング スキームも必要です。より長いメッセージの場合は、ハッシュ関数と組み合わせる必要があります。

これ (および対応する関数) を使用することはお勧めしRSA_private_encryptません。また、M2Crypto ライブラリがそれを公開する理由もわかりません。

于 2011-11-29T21:34:53.800 に答える