使用bouncycastle C#加密字符串

时间:2018-10-12 12:40:00

标签: c# certificate bouncycastle

当前正在学习有关从Windows存储读取证书的信息。  然后使用私钥和公钥对字符串加密然后解密。

我的商店中有一个证书,上面已分配了公钥和私钥。

我正在使用

阅读公钥
        X509Store store = new X509Store(StoreName.My, StoreLocation.CurrentUser);
        store.Open(OpenFlags.ReadOnly);

        foreach (X509Certificate2 certificate in store.Certificates)
        {
            //TODO's
            byte[] encodedPublicKey = certificate.PublicKey.EncodedKeyValue.RawData;
            File.WriteAllLines(filePath, new[] {
            "-----BEGIN PUBLIC KEY-----",
            Convert.ToBase64String(encodedPublicKey, Base64FormattingOptions.InsertLineBreaks),
                "-----END PUBLIC KEY-----"
            });

            publicKey = System.IO.File.ReadAllText(filePath);

            encryptedWithPublic = encryption.EncryptWithPublic(input, publicKey);
        }
        store.Close();

我然后调用此方法进行加密

var bytesToEncrypt = Encoding.UTF8.GetBytes(clearText);

        var encryptEngine = new Pkcs1Encoding(new RsaEngine());

        using (var txtreader = new StringReader(publicKey))
        {
            var keyParameter = (AsymmetricKeyParameter)new PemReader(txtreader).ReadObject();

            encryptEngine.Init(true, keyParameter);
        }

        var encrypted = Convert.ToBase64String(encryptEngine.ProcessBlock(bytesToEncrypt, 0, bytesToEncrypt.Length));
        return encrypted;

注意-当我创建自己的公共密钥时,上述方法有效,但是当我使用密钥库中的公共密钥时,它就会掉入

其他信息:GetInstance中的未知对象:    Org.BouncyCastle.Asn1.DerInteger

很明显,当我从商店中读取内容时,我做错了事,但是在此问题上,我没有找到任何帮助

0 个答案:

没有答案