c# - RSACryptoServiceProvider 使用自己的公钥和私钥加密和解密

标签 c# encryption cryptography rsa

有人告诉我,对于非对称加密,您可以使用公钥加密明文并使用私钥解密。所以我尝试了以下方法:

    static void Main(string[] args)
    {
        RSACryptoServiceProvider rsa = new RSACryptoServiceProvider();
        string pubkey = rsa.ToXmlString(false);
        string prikey = rsa.ToXmlString(true);

        byte[] someThing = RSAEncrypt(Encoding.Unicode.GetBytes("Hello World"), pubkey);
        byte[] anotherThing = RSADecrypt(someThing, prikey);

        Console.WriteLine(Convert.ToBase64String(anotherThing));
    }

加密和解密函数

    public static byte[] RSAEncrypt(byte[] plaintext, string destKey)
    {
        byte[] encryptedData;
        RSACryptoServiceProvider rsa = new RSACryptoServiceProvider();
        rsa.FromXmlString(destKey);
        encryptedData = rsa.Encrypt(plaintext, true);
        rsa.Dispose();
        return encryptedData;
    }

    public static byte[] RSADecrypt(byte[] ciphertext, string srcKey)
    {
        byte[] decryptedData;
        RSACryptoServiceProvider rsa = new RSACryptoServiceProvider();
        rsa.FromXmlString(srcKey);
        decryptedData = rsa.Decrypt(ciphertext, true);
        rsa.Dispose();
        return decryptedData;
    }

我希望控制台显示 Hello World,但它显示此 SABlAGwAbABvACAAVwBvAHIAbABkAA==。我是否错误地使用了 RSACryptoServiceProvider?

最佳答案

它是base 64,解码字符串,你会得到“Hello world”。

关于c# - RSACryptoServiceProvider 使用自己的公钥和私钥加密和解密,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34613479/

相关文章:

c# - 程序设计问题,filesystemwatcher,多线程C#

c# - 无法将.Net Core 2.0项目的项目引用添加到Azure函数项目(netStandard2.0)

bash - 解密目录中的多个 OpenPGP 文件

c# - 如何在C#项目中使用VS2012的自动HLSL编译?

asp.net - 如何使用 aspnet_regiis.exe 正确加密我的 Web.config?

使用 BouncyCaSTLe SSL 使用 keyFile 进行 Java AES 加密

c++ - ECDSA key 对生成输出错误

python - 在 Windows XP 上安装后,加密模块对 Python 不可见

cryptography - 使用 "node-forge"、 "exponent"和 "modulus"在 "maxdigits"中生成 key 对

c# - 使用 LINQ to Entities 从数据库中选择最新条目