В данный момент учимся читать в сертификате из магазина 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
ясно, что я делаю что-то не так, когда я читаю измагазин, но мне не удалось найти какую-либо помощь здесь с этой проблемой