【发布时间】:2017-05-26 11:14:51
【问题描述】:
我很难找到一个很好的例子来加密/解密 C# 中的字符串使用证书。我能够找到并实现 signing 和验证签名的示例,如下所示。有人可以指出一个简单的类似加密示例吗?
private static string Sign(RSACryptoServiceProvider privateKey, string content)
{
SHA1Managed sha1 = new SHA1Managed();
UnicodeEncoding encoding = new UnicodeEncoding ();
byte[] data = encoding.GetBytes(content);
byte[] hash = sha1.ComputeHash(data);
// Sign the hash
var signature = privateKey.SignHash(hash, CryptoConfig.MapNameToOID("SHA1"));
return Convert.ToBase64String(signature);
}
public static bool Verify(RSACryptoServiceProvider publicKey, string content, string hashString)
{
SHA1Managed sha1 = new SHA1Managed();
UnicodeEncoding encoding = new UnicodeEncoding ();
byte[] data = encoding.GetBytes(content);
byte[] hash = sha1.ComputeHash(data);
return publicKey.VerifyHash(hash, CryptoConfig.MapNameToOID("SHA1"), Convert.FromBase64String(hashString));
}
【问题讨论】:
-
您是在询问如何加载证书以与 RSA 一起使用,还是已经为 RSACryptoServiceProvider 加载了证书中的密钥?
-
你看过这个related post吗?
-
请注意,您将/只能使用 RSA 加密少量数据,而不是任意长度的文本。
-
我已经有一个 RSACryptoServiceProvider 加载了私钥/公钥。根据一些研究,我的理解是,我需要使用更快的对称加密来加密数据,然后使用更慢的非对称加密使用证书来加密密钥。我遇到的麻烦是将所有在线示例组合成一个加密/解密函数,例如用于签名。
标签: c# encryption certificate x509certificate x509