2010-09-10 6 views
1

Je reçois une chaîne cryptée à partir d'un service externe que j'ai besoin de décrypter, puis de rechiffrer en utilisant le BouncyCastle API.BouncyCastle Decryption fonctionne, mais pas Cryptage?

J'ai réussi à faire fonctionner correctement le décryptage, mais le cryptage ne semble pas fonctionner. Lorsque j'essaie de décrypter une chaîne générée par ma méthode de cryptage, j'obtiens un InvalidCipherTextException avec le message "type de bloc inconnu".

Ceci est mon code de décryptage qui décrypte avec succès le texte du service que je suis interface avec:

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); 
} 

Ceci est ma méthode de cryptage, ce qui ne semble pas générer une chaîne cryptée que ma méthode de déchiffrement peut gérer:

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); 
} 

Je ne suis pas vraiment sûr de ce qui me manque pour faire ce travail. Y at-il quelque chose d'évident que je semble manquer ici?

Répondre

1

Je suppose que votre chaîne Signature contient en fait un encodage en base64 d'une clé publique?

Je ne vais pas vous donner un cours complet sur Public-key cryptography, mais rappelez-vous que vous devez utiliser la clé publique pour crypter et la clé privée à déchiffrer. Il semble que vous essayez de faire les deux avec la même clé.

Questions connexes