无法使用rsa c解密#

时间:2014-12-11 06:02:53

标签: c# c#-4.0 encryption cryptography bouncycastle

保存加密的密钥字符串后,我无法使用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;
    }
}

0 个答案:

没有答案