1

Python でテキストを暗号化し、C# で復号化する必要があります。Pythonでは、次のコードがあります:

私はPythonでこのコードを持っています:

def genKey():
    rsa = RSA.gen_key(2048, 65537)
    rsa.save_key('c:/temp/priv-key.pem', callback=passwordCallback)
    rsa.save_pub_key('c:/temp/pub-key.pem')

def encrypt():
    varkey = readkey('c:/temp/pub-key.pem')
    bio = BIO.MemoryBuffer(varkey)
    rsa = RSA.load_pub_key_bio(bio)

    encrypted = rsa.public_encrypt('My Text Here.', RSA.pkcs1_oaep_padding)

    f = open("c:/temp/cript.txt", "w")
    f.write(encrypted)
    f.close()

このコードは M2Crypto を使用しています。

私が言ったように、C# で生成された結果を解読したいと思います。以下は私のコードです:

static void Main(string[] args)
{
    string text = GetText();
    System.Text.ASCIIEncoding  encoding=new System.Text.ASCIIEncoding();
    Byte[] payload = encoding.GetBytes(text);

    byte[] b = System.IO.File.ReadAllBytes(@"C:\temp\priv-key.pem");
    System.Text.ASCIIEncoding enc = new System.Text.ASCIIEncoding();

    OpenSSL.Core.BIO bio = new OpenSSL.Core.BIO(b);
    OpenSSL.Crypto.CryptoKey key = OpenSSL.Crypto.CryptoKey.FromPrivateKey(bio, "mypassword");
    RSA rsa = key.GetRSA();
    byte[] result = rsa.PrivateDecrypt(payload, RSA.Padding.OAEP);
}

問題は次の行です。

byte[] result = rsa.PrivateDecrypt(payload, RSA.Padding.OAEP);

実行すると、次のエラーが発生します。

error:0407A079:rsa routines:RSA_padding_check_PKCS1_OAEP:oaep decoding error
error:04065072:rsa routines:RSA_EAY_PRIVATE_DECRYPT:padding check failed

暗号化と C# の達人は私を助けることができますか?

4

1 に答える 1

0

暗号文をテキストとして書いてencryptionいます。代わりに、Python のバイナリ モードでファイルを開く必要があります。次に、C# でも同じことを行いますが、その逆です。ここでは、文字列ではなくバイトを暗号文として返す必要があります。

バイナリ モードの代わりにテキスト モードを使用する場合は、base 64 エンコード/デコードを使用できます。

于 2013-07-12T18:30:04.150 に答える