C# 如何使用OpenSSL生成的公钥秘钥对进行加密解密?

发布于 2022-08-26 15:53:51 字数 1482 浏览 6 评论 0

class RSA
    {
        static String pubKey = "MCwwDQYJKoZIhvcNAQEBBQADGwAwGAIRAO8EnwmDeL+OOSvkqKy5dIkCAwEAAQ==";
        static String priKey = "MGMCAQACEQDvBJ8Jg3i/jjkr5KisuXSJAgMBAAECEQDJhcPxaX/tQIOj7Io/sUQB\nAgkA92qTuJhxI7kCCQD3T3SHDsffUQIIbIW46b0j0zECCD0Kr4hmbY8BAgkAwBBk\n2nJozn4=";


        public static String Encrypt(String content)
        {
            RSACryptoServiceProvider rsa = new RSACryptoServiceProvider();
            byte[] pubKeyBytes = Convert.FromBase64String(pubKey);
            rsa.ImportCspBlob(pubKeyBytes);
            byte[] resultBytes = rsa.Encrypt(Encoding.UTF8.GetBytes(content), false);
            String result = Convert.ToBase64String(resultBytes);

            return result;
        }
        public static String Decrypt(String content)
        {
            RSACryptoServiceProvider rsa = new RSACryptoServiceProvider();
            byte[] priKeyBytes = Convert.FromBase64String(priKey);
            rsa.ImportCspBlob(priKeyBytes);
            byte[] resultBytes = rsa.Decrypt(Convert.FromBase64String(content), false);
            String reuslt = Encoding.UTF8.GetString(resultBytes);
            return reuslt;
        }
    }

测试:String result = RSA.Encrypt("123"); 会在这一行:rsa.ImportCspBlob(pubKeyBytes); 报错:System.Security.Cryptography.CryptographicException: 不正确的提供程序版本。

请问正确的做法是怎么样的?


测试了C#自己生成的公钥密钥对是可以用的,但是ruby 用openssl生成的就不行. 反之 C#生成的 ruby的openssl库也不能用.

是参数设置的不对么

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文