Я пытаюсь обновить версию Sage Pay с 2.22 до 3.00 и использую Form Intergration для отправки значений в Sage. Коды написаны asp.net(VB). В версии 2.2 использовался «алгоритм шифрования SimpleXor», но это не разрешено в версии 3.00, и в результате я получаю следующее сообщение об ошибке:
Эта попытка транзакции не удалась. Мы не можем перенаправить вас обратно в интернет-магазин, в котором вы совершали покупку. Подробности неисправности приведены ниже.
Status: INVALID
Status Detail: 5068 : The encryption method is not supported by this protocol version.
Я обнаружил, что версия 3.00 допускает только шифрование AES, и я добавил приведенный ниже код в файл класса для шифрования:
Public Shared Function AESEncrypt(ByVal clearText As String) As String
Dim EncryptionKey As String = "MAKV2SPBNI99212"
Dim clearBytes As Byte() = Encoding.Unicode.GetBytes(clearText)
Using encryptor As Aes = Aes.Create()
Dim pdb As New Rfc2898DeriveBytes(EncryptionKey, New Byte() {&H49, &H76, &H61, &H6E, &H20, &H4D, _
&H65, &H64, &H76, &H65, &H64, &H65, _
&H76})
encryptor.Key = pdb.GetBytes(32)
encryptor.IV = pdb.GetBytes(16)
Using ms As New MemoryStream()
Using cs As New CryptoStream(ms, encryptor.CreateEncryptor(), CryptoStreamMode.Write)
cs.Write(clearBytes, 0, clearBytes.Length)
cs.Close()
End Using
clearText = Convert.ToBase64String(ms.ToArray())
End Using
End Using
Return clearText
End Function
И в основном файле .vb я меняю следующий код:
Dim strXOR As String = simpleXor(strPost, strEncryptionPassword)
strCrypt = base64Encode(strXOR)
To
Dim aesEncrypt As String = AESEncrypt(strPost)
strCrypt = "@" & aesEncrypt
Извините, я начинаю в этом. Есть ли какие-либо ошибки, которые я сделал в своем файле класса или в основном файле vb? Нужно ли кодировать base64 после шифрования AES?
Заранее спасибо.