0
我想解密從SagePay Forms發回的字符串,並在解密後得到垃圾回來。我無法弄清楚爲什麼。我的解密代碼是:AES解密問題 - 從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密碼都是相同的字符串嗎? –
好問題。這就是它爲第三方設置的加密方式,該部分工作正常。 –
我投票結束這個問題,因爲解決這個謎題所需的組件不在問題中,例如,演示密鑰,輸入,輸出和加密操作。 –