【发布时间】:2016-11-21 18:22:07
【问题描述】:
我正在尝试找出一种使用私钥加密字符串并使用公共密钥对其进行解密的方法。我使用 OpenSSL 生成了密钥,如下所述:
http://www.akadia.com/services/ssh_test_certificate.html
这是我目前拥有的
public static string Encrypt(string str, string key)
{
try
{
key = key.Replace(Environment.NewLine, "");
IBuffer keyBuffer = CryptographicBuffer.DecodeFromBase64String(key);
AsymmetricKeyAlgorithmProvider provider = AsymmetricKeyAlgorithmProvider.OpenAlgorithm(AsymmetricAlgorithmNames.RsaPkcs1);
CryptographicKey publicKey = provider.ImportPublicKey(keyBuffer, CryptographicPublicKeyBlobType.Pkcs1RsaPublicKey);
IBuffer dataBuffer = CryptographicBuffer.CreateFromByteArray(Encoding.UTF8.GetBytes(str));
var encryptedData = CryptographicEngine.Encrypt(publicKey, dataBuffer, null);
return CryptographicBuffer.EncodeToBase64String(encryptedData);
}
catch (Exception e)
{
throw;
return "Error in Encryption:With RSA ";
}
}
但是在 ImportPublicKey 方法上我得到了一个例外 ASN1 corrupted data
传递给该方法的字符串key具有以下格式:
var privateKey =
@"MIICXwIBAAKBgQDUTqfSknFiQx3aepORHJycWck007cfU4fXluTIyf6U9ipDhyPD …… yDxwZVmexltyK5Bwc26lmb+5EtTEic+kZToYWcCucF8lsok=";
所以OpenSSL生成的密钥文件的内容没有这部分:
-----BEGIN RSA PRIVATE KEY-----
-----END RSA PRIVATE KEY-----
【问题讨论】:
标签: c# uwp win-universal-app .net-core windows-10-universal