Я пытаюсь расшифровать строку, отправленную обратно из форм SagePay, и я получаю мусор обратно после дешифрования. Я не могу понять, почему. Мой дешифрования код:AES Decryption Issue - Return Crypt from SagePay
public string AESdecrypt(string input)
{
return Encoding.UTF8.GetString(AESdecrypt(Convert.FromBase64String(input)));
}
public byte[] AESdecrypt(byte[] input)
{
//PasswordDeriveBytes pdb = new PasswordDeriveBytes("hjiweykaksd", new byte[] { 0x43, 0x87, 0x23, 0x72, 0x45, 0x56, 0x68, 0x14, 0x62, 0x84 });
MemoryStream ms = new MemoryStream();
Aes aes = new AesManaged();
aes.Padding = PaddingMode.PKCS7;
aes.Mode = CipherMode.CBC;
aes.KeySize = 128;
aes.BlockSize = 128;
aes.Key = Encoding.UTF8.GetBytes(conf["ENCRYPTPWD"]);
aes.IV = Encoding.UTF8.GetBytes(conf["ENCRYPTPWD"]);
CryptoStream cs = new CryptoStream(ms, aes.CreateDecryptor(), CryptoStreamMode.Write);
cs.Write(input, 0, input.Length);
return ms.ToArray();
}
И призыв к шифровке:
uncrypt = _sagePay.AESdecrypt(Request.QueryString["crypt"].Replace("@"," "));
После расшифровки я в основном получаю gabbage
��z%3A %25�H��%0E�nS�%0A�M%01��)f%1F%13��D\����3l�%7F����2���%1F�%07gR�%0BoJ%05���c� %25Fm�hL��ݕz|�e�q���%3F���%24m�w%10�l*I����P%03%1F>�>`�ڸQ�%00I�����%0D�{%0D%0C�|%0D�p����)�9�%23�W4���wQo%3A�����.�V1�%0Dc��%3B%1F%15�M�a`o�B%0F%06�S�7H�%0D%15�H�A P)%26�ߵ4%17���C�}�g�7X��W\%11�H�Y�%2C��%08�xV%7FJ"��*%0A(2ޓ�%01%2F0��\�xcy��c�<�"%24%0AaX6���Y�%2Ci��O؇���UF%3F%14i��%3D'z%3B��{R<h8%1B%3A}��y�t5���Z�r�%00%07Z%3A�8�Ch�T��%11U�������Lv�]1j�E�ҳҖ{ �cq��4��%09T��as%1CO���B�M%3D�e�0%19|�%0C�.õ%0B�U�%14X��y���h%23%05!k�*����k%03��%10�C%1A�Z%25 %18%0Ci�%3F%0F�%12��l�̓�%2F��%0E%05�%02�Pc%02-����tAa%1C*%03�X>W�%3D%1C�%3Blg���8�1z�E�%2F�|�%17%06�%19N��aO%3F%12c�A�%40�%3Bt�%00�uɈ�2�%1F
Я предполагаю, либо я кодирование/декодирования неправильно или я что-то упускаю во время дешифрования.
Вы уверены, что ключ AES и IV - это одна и та же строка (пароль)? –
Хороший вопрос. Так он настроен на шифрование для третьей стороны, и эта часть работает нормально. –
Я голосую, чтобы закрыть этот вопрос как вне темы, потому что требуемые компоненты для решения этой тайны отсутствуют в этом вопросе, например. демонстрационный ключ, ввод, вывод и операцию шифрования. –