Je voudrais effectuer le cryptage AES en C# et le décryptage en CryptoJS.Chiffrement AES en C# et décryptage en CryptoJS
Répondre
Cela fonctionne maintenant après avoir obtenu une référence du groupe Google CryptoJS (https://groups.google.com/forum/#!msg/crypto-js/ysgzr2Wxt_k/_Wh8l_1rhQAJ).
Voici le code de cryptage en C# .NET.
public class ClsCrypto
{
private RijndaelManaged myRijndael = new RijndaelManaged();
private int iterations;
private byte [] salt;
public ClsCrypto(string strPassword)
{
myRijndael.BlockSize = 128;
myRijndael.KeySize = 128;
myRijndael.IV = HexStringToByteArray("e84ad660c4721ae0e84ad660c4721ae0");
myRijndael.Padding = PaddingMode.PKCS7;
myRijndael.Mode = CipherMode.CBC;
iterations = 1000;
salt = System.Text.Encoding.UTF8.GetBytes("insight123resultxyz");
myRijndael.Key = GenerateKey(strPassword);
}
public string Encrypt(string strPlainText)
{
byte [] strText = new System.Text.UTF8Encoding().GetBytes(strPlainText);
ICryptoTransform transform = myRijndael.CreateEncryptor();
byte [] cipherText = transform.TransformFinalBlock(strText, 0, strText.Length);
return Convert.ToBase64String(cipherText);
}
public static byte [] HexStringToByteArray(string strHex)
{
dynamic r = new byte[strHex.Length/2];
for (int i = 0; i <= strHex.Length - 1; i += 2)
{
r[i/2] = Convert.ToByte(Convert.ToInt32(strHex.Substring(i, 2), 16));
}
return r;
}
private byte[] GenerateKey(string strPassword)
{
Rfc2898DeriveBytes rfc2898 = new Rfc2898DeriveBytes(System.Text.Encoding.UTF8.GetBytes(strPassword), salt, iterations);
return rfc2898.GetBytes(128/8);
}
}
Voici le code de décryptage en langage Java.
<head runat="server">
<script src="rollups/aes.js" type="text/javascript"></script>
<script src="rollups/sha256.js" type="text/javascript"></script>
<script src="rollups/pbkdf2.js" type="text/javascript"></script>
<script type="text/javascript">
function DecryptData() {
var encryptData = document.getElementById('TextEncrypted').value;
var decryptElement = document.getElementById('TextDecrypt');
try {
//Creating the Vector Key
var iv = CryptoJS.enc.Hex.parse('e84ad660c4721ae0e84ad660c4721ae0');
//Encoding the Password in from UTF8 to byte array
var Pass = CryptoJS.enc.Utf8.parse('insightresult');
//Encoding the Salt in from UTF8 to byte array
var Salt = CryptoJS.enc.Utf8.parse("insight123resultxyz");
//Creating the key in PBKDF2 format to be used during the decryption
var key128Bits1000Iterations = CryptoJS.PBKDF2(Pass.toString(CryptoJS.enc.Utf8), Salt, { keySize: 128/32, iterations: 1000 });
//Enclosing the test to be decrypted in a CipherParams object as supported by the CryptoJS libarary
var cipherParams = CryptoJS.lib.CipherParams.create({
ciphertext: CryptoJS.enc.Base64.parse(encryptData)
});
//Decrypting the string contained in cipherParams using the PBKDF2 key
var decrypted = CryptoJS.AES.decrypt(cipherParams, `enter code here`key128Bits1000Iterations, { mode: CryptoJS.mode.CBC, iv: iv, padding: CryptoJS.pad.Pkcs7 });
decryptElement.value = decrypted.toString(CryptoJS.enc.Utf8);
}
//Malformed UTF Data due to incorrect password
catch (err) {
return "";
}
}
</script>
</head>
Ceci est mon code pour js encodage/décodage, complétant votre suggestion: 'var cfg = {Mode: CryptoJS.mode.CBC, iv: iv, remplissage: CryptoJS.pad.Pkcs7};' 'var encrypted = CryptoJS. AES.encrypt ("MMMessageąćęł", clé, cfg); ' ' var sEncrypted = CryptoJS.enc.Base64.stringify (chiffré.ciphertext); ' ' var decrypted2 = CryptoJS.AES.decrypt (sEncrypted, clé, cfg) ; ' – Jarekczek
Notez que IV doit être lancé de manière aléatoire pour chaque exécution de cryptage. Vous ne pouvez pas vous deux fois la même IV, pour des raisons de sécurité. https://en.wikipedia.org/wiki/Block_cipher_mode_of_operation#Initialization_vector_.28IV.29 – Jarekczek
- 1. Chiffrement et décryptage C#
- 2. Chiffrement et décryptage C#
- 3. AES 128 ECB Décryptage en .net C#
- 4. Chiffrement dans c lang. et décryptage en C#
- 5. Décryptage AES en utilisant ObjectiveC
- 6. CryptoJS AES et Java AES non-concordance de valeur chiffrée
- 7. Cryptage AES utilisant C# et décryptage en Java
- 8. code source de chiffrement et de déchiffrement AES en C#
- 9. chiffrement côté service, décryptage sur le client (aes)
- 10. Algorithme de décryptage AES
- 11. problème Java AES Décryptage
- 12. décryptage des données avec AES/CBC/PKCS5Padding en utilisant blackberry
- 13. Chiffrement AES PBE en Java/Decrypt en Ruby
- 14. Cryptage en C# et décryptage en Flex
- 15. Node.js AES décryptage
- 16. android: AES cryptage/décryptage en utilisant openSSL
- 17. AES-CTR Chiffrer dans CryptoJS et décrypter dans Go lang
- 18. Chiffrement et décryptage DES-ECB
- 19. Erreur de remplissage - lors de l'utilisation du cryptage AES en Java et du décryptage en C
- 20. AES/BFC décryptage
- 21. décryptage Android lente AES
- 22. Cryptage AES avec openssl décryptage en utilisant java
- 23. Chiffrement de fichier AES avec .Net Framework et décryptage avec IOS
- 24. AES256 chiffrement en C#
- 25. Chiffrement Aes-128 cfb8 dans l'objectif c
- 26. AES 256 erreur de décryptage
- 27. Octets Java pour le décryptage AES
- 28. AES (aes-cbc-128, aes-cbc-192, aes-cbc-256) cryptage/décryptage avec openssl C
- 29. Paramètre supplémentaire CryptoJS dans AES Encrypt. Comment répliquer avec PHP?
- 30. Chiffrement/décryptage Rijndael
Votre question ne précise pas ce que vous avez fait pour essayer de résoudre le problème; il se lit actuellement comme une demande de code. Veuillez partager votre tentative d'implémentation et expliquer comment elle ne répond pas à vos exigences. –