2010-09-10 74 views
1

我從需要解密的外部服務獲取加密字符串,然後使用BouncyCastle API重新加密。BouncyCastle解密有效,但不是加密?

我已經成功地得到解密工作正常,但加密似乎並沒有工作。當我嘗試解密由我的加密方法生成的字符串時,我得到一個帶有「未知塊類型」消息的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

我假設你Signature -string實際上包含的base64編碼公鑰的?

我不會給你一個完整的課程上Public-key cryptography,但請記住,你必須使用公共密鑰來加密和私鑰來解密。看起來你正試圖用同一把鑰匙來完成這兩件事。