Я использую хранилище ключей, которое было создано с помощью vc 6.0 и cryptoAPI. Хранилище ключей содержит все ключи обмена/подписи. Таким образом, я могу использовать открытые ключи просто отлично, чтобы шифровать данные с помощью RSA, но когда приходит время подписывать или расшифровывать данные, которые, как мне кажется, не могут найти, как дешифровать с помощью закрытого ключа.Как подписать и зашифровать хеш с C#, указанным только хранилище ключей
Я видел множество сайтов, используя rsa = (RSACryptoServiceProvider) cert.PrivateKey;
но в моем хранилище ключей, когда я смотрю сертификаты, все закрытые ключи не существуют.
// это как я настроить магазин
public cryptTest(string storeName)
{
store = new X509Store(storeName);
this.storename = storename;
}
// это как я получить сертификат из магазина
public X509Certificate2 getCertificate(string ID, certType ct)
{
if (store == null)
{
return null;
}
store.Open(OpenFlags.ReadOnly);
foreach (X509Certificate2 cert in store.Certificates)
{
if ((ct == certType.exchange && cert.Subject.Contains("Exchange")) ||
(ct == certType.signature && cert.Subject.Contains("Signature")))
{
if (cert.Subject.Contains(ID)) // if the ID match
{
// todo check date etc ! is cert still valid if not delete etc.
store.Close();
return cert;
}
}
}
store.Close();
return null;
}
, но затем в них сертификаты не имеют закрытый ключ , так как я могу расшифровать или подписать с помощью сертификатов в хранилище ключей?
Спасибо, миллион!