保存加密的密钥字符串后,我无法使用rsa decrypt方法解密字符串。 实际上在我的场景中,在使用下面的方法对字符串进行编码之后,我将进入另一个第三方方法,该方法再次提供解码后的密钥,我需要将其存储以备将来使用。这个密钥在需要时我将使用rsa decrypt传递给decrypt方法。如果我在程序流程中加密和解密而没有任何中断,整个场景工作正常。但是当我复制并保存由我的第三方函数生成的解码密钥字符串(供将来使用)然后使用它进行解密时,它会给我“错误数据”错误。如何在不中断程序流程的情况下运行程序,它运行正常。仅当我从第三方获取密钥字符串然后使用该密钥进行进一步解密后,我停止了程序流程,发生了错误。这是我的代码,
public static RSACryptoServiceProvider cryptoProvider = new RSACryptoServiceProvider(2048);
public static string BounceEncrypt()
{
var publicKey = DotNetUtilities.GetRsaPublicKey(cryptoProvider);
var publicKeyInfo = SubjectPublicKeyInfoFactory.CreateSubjectPublicKeyInfo(publicKey);
var publicEncodedBytes = publicKeyInfo.ToAsn1Object().GetDerEncoded();
var publicEncodedString = Convert.ToBase64String(publicEncodedBytes);
return publicEncodedString;
}
//Third party method
public static string ThirdPartyMethod(string encryptedkey)
{
//sends request
//fetches response
return strKey;
}
public static byte[] BounceDecrypt(string strKey)
{
if (!string.IsNullOrEmpty(strKey) && !string.IsNullOrWhiteSpace(strKey))
{
//Decryption
var macKeyBase64Decoded = Convert.FromBase64String(strKey);
var macKey = cryptoProvider.Decrypt(macKeyBase64Decoded,false);
return macKey;
}
else
{
return null;
}
}