Я хотел бы сделать шифрование AES на C# и расшифровать в CryptoJS.AES Шифрование в C# и дешифрование в CryptoJS
ответ
Теперь он работает после получения некоторой информации от группы Google CryptoJS (https://groups.google.com/forum/#!msg/crypto-js/ysgzr2Wxt_k/_Wh8l_1rhQAJ).
Вот код шифрования в 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);
}
}
Ниже приведен код дешифрования в скрипте 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>
Это мой код для кодирования/декодирования js, дополняющий ваше предложение: 'var cfg = {mode: CryptoJS.mode.CBC, iv: iv, padding: CryptoJS.pad.Pkcs7};' 'var encrypted = CryptoJS. AES.encrypt («MMMessageąćęł», key, cfg); ' ' var sEncrypted = CryptoJS.enc.Base64.stringify (encrypted.ciphertext); ' ' var decrypted2 = CryptoJS.AES.decrypt (sEncrypted, key, cfg) ; ' – Jarekczek
Обратите внимание, что IV следует запускать случайным образом для каждого запуска шифрования. Вы не можете получить тот же IV дважды по соображениям безопасности. https://en.wikipedia.org/wiki/Block_cipher_mode_of_operation#Initialization_vector_.28IV.29 – Jarekczek
- 1. AES Шифрование в CryptoJS и дешифрование в Coldfusion
- 2. Шифрование и дешифрование AES
- 3. Шифрование и дешифрование IOS, Node.js AES
- 4. Прогрессивное дешифрование AES с помощью CryptoJS
- 5. UWP: шифрование и дешифрование AES
- 6. Шифрование и дешифрование AES CTR
- 7. Шифрование/дешифрование AES-128
- 8. AES String Шифрование/дешифрование
- 9. Android AES шифрование и дешифрование
- 10. AES-шифрование и дешифрование Java
- 11. android AES шифрование/дешифрование
- 12. CryptoJS AES. Как повторить шифрование
- 13. Шифрование CryptoJs и дешифрование C# с использованием RijndaelManaged - Ошибка
- 14. AES Шифрование с использованием CryptoJS
- 15. Шифрование CryptoJS AES не симметрично?
- 16. Как добавить шифрование HMAC в CryptoJS AES?
- 17. AES-шифрование в javascript и дешифрование в java
- 18. Шифрование/дешифрование AES для новичков
- 19. Шифрование/дешифрование AES от C# до java
- 20. Шифрование и дешифрование AES не соответствует
- 21. AES шифрование и дешифрование потери данных
- 22. Шифрование/дешифрование строки AES в C и java
- 23. Шифрование CryptoJS AES и несоответствие значения дешифрования JAVA AES
- 24. RNCryptor IOS + шифрование/дешифрование Javascript AES 256
- 25. AES-256-CBC шифрование и дешифрование
- 26. .NET AES Шифрование и дешифрование Android
- 27. Шифрование и дешифрование с использованием AES-256
- 28. AES CTR симметричное шифрование и дешифрование
- 29. Шифрование данных с использованием CryptoJS и дешифрование с использованием AESCipherService
- 30. Шифрование/дешифрование класса NSData-AES в Cocoa
Ваш вопрос не объясняет, что вы сделали, чтобы попытаться решить эту проблему; он в настоящее время читается как запрос кода. Поделитесь своей попыткой внедрения и объясните, как она не соответствует вашим требованиям. –