BouncyCastle Decryption有效,但不是加密吗?

时间:2010-09-10 13:22:52

标签: c# encryption cryptography bouncycastle

我从外部服务获取加密字符串,我需要解密,然后使用BouncyCastle API重新加密。

我设法使解密工作正常,但加密似乎不起作用。当我尝试解密由我的加密方法生成的字符串时,我得到一个带有“未知块类型”消息的InvalidCipherTextException

这是我的解密代码,它成功解密了我正在接口的服务中的文本:

string Decrypt(string value) 
{
    string Signature = "My_Signature";
    RsaKeyParameters keyParams = (RsaKeyParameters)PublicKeyFactory.CreateKey(Convert.FromBase64String(Signature));
    IBufferedCipher cipher = CipherUtilities.GetCipher("RSA/NONE/PKCS1Padding");
    cipher.Init(false, keyParams);

    byte[] secretBytes = Convert.FromBase64String(value);
    byte[] decrypted = cipher.DoFinal(secretBytes);

    return Encoding.Default.GetString(decrypted);
}

这是我的加密方法,它似乎不会生成我的解密方法可以处理的加密字符串:

string Encrypt(string value)
{
    string Signature = "My_Signature";
    RsaKeyParameters keyParams = (RsaKeyParameters)PublicKeyFactory.CreateKey(Convert.FromBase64String(Signature));
    IBufferedCipher cipher = CipherUtilities.GetCipher("RSA/NONE/PKCS1Padding");
    cipher.Init(true, keyParams);

    byte[] secretBytes = Encoding.Default.GetBytes(value);
    byte[] encrypted = cipher.DoFinal(secretBytes);

    return Convert.ToBase64String(encrypted);
}

我不确定我缺少什么才能完成这项工作。有什么明显的东西我似乎在这里失踪了吗?

1 个答案:

答案 0 :(得分:1)

我假设您的Signature字符串实际上包含公钥的base64编码?

我不会在Public-key cryptography上给你一个完整的课程,但请记住你必须使用公钥加密和私钥解密。看起来你正试图用同一把钥匙做两件事。