Mon programme génère une clé AES, la crypte avec l'algorithme rsa et l'envoie au serveur. Mais quand je l'ai récupéré du serveur et décrypté certains octets sont devenus corrompus et remplacés par une séquence 239 191 189
Selon cette question UTF-8 Encoding and decoding issue J'ai réalisé que le problème est que le serveur (qui déchiffre aussi la clé) le stocke en tant que chaîne UTF-8. Est-il possible de créer des clés "UTF-8 friendly"? Voici comment générer des clés:Convertir le château gonflable aes en UTF-8 string
IBufferedCipher cipher = CipherUtilities.GetCipher("AES/CBC/PKCS7Padding");
CipherKeyGenerator aesKeyGenerator = new CipherKeyGenerator();
var rand = new SecureRandom();
aesKeyGenerator.Init(new KeyGenerationParameters(rand, 256));
byte[] key = aesKeyGenerator.GenerateKey();
var aesKey = ParameterUtilities.CreateKeyParameter("AES", _key);
var iv = new byte[32];
rand.NextBytes(iv);
ParametersWithIV aesKeyParam = new ParametersWithIV(aesKey, iv);
Une clé générée n'est probablement pas du texte, mais un tableau d'octets. Au moins, ça devrait l'être. N'essayez pas de convertir la clé directement en UTF-8. Au lieu de convertir les octets de clé en caractères en utilisant Base64. Bien sûr, vous aurez besoin de convertir le Base64 en octets originaux avant de l'utiliser comme une clé. – rossum