Я пытаюсь зашифровать почтовый индекс в VB.NET для отправки на устройство Android с помощью Air.Затем, попав на устройство, расшифруйте его, используя ключ и IV.
Вот часть моего кода VB.NET:
Private Sub EncryptBytes(ByVal fileIn As String, ByVal fileOut As String, ByVal pass As String, ByVal ivString As String)
Dim crypt As New RijndaelManaged
crypt.KeySize = 256
crypt.BlockSize = 256
crypt.Padding = PaddingMode.PKCS7
crypt.Mode = CipherMode.CFB
'read byte array from file location, ie c:\temp\file.zip
Dim data As Byte() = ReadByteArray(fileIn)
Dim iv As Byte() = System.Text.Encoding.UTF8.GetBytes(ivString)
Dim key As Byte() = System.Text.Encoding.UTF8.GetBytes(pass)
Dim encryptor As ICryptoTransform = crypt.CreateEncryptor(key, iv)
Using ms As New System.IO.MemoryStream
Using cs As New CryptoStream(ms, encryptor, CryptoStreamMode.Write)
cs.Write(data, 0, data.Length)
cs.FlushFinalBlock()
End Using
'write byte array to file location, ie c:\temp\file_e.zip
WriteByteArray(fileOut, ms.ToArray)
End Using
End Sub
Две вещи, во-первых, я не хочуиспользовать PaddingMode.PKCS7, но когда я изменяю его на PaddingMode.None, я получаю сообщение об ошибке «Длина данных для шифрования недопустима» во время расшифровки.
Во-вторых, у меня есть расшифровка SUB, и она все еще работает, еслиЯ посылаю это фальшивым IV.Почему IV не влияет на процесс расшифровки.
DECRYPTION
В эфире я использую пакет com.hurlant.crypto, который я нашел в http://crypto.hurlant.com/docs/.
Вот моя функция:
public static function decryptZip(src:ByteArray, k:String, iv:String):ByteArray {
var key:ByteArray = Hex.toArray(Hex.fromString(k));
var mode:CFBMode = new CFBMode(new AESKey(key), new PKCS7(256));
mode.IV = Hex.toArray(Hex.fromString(iv));
mode.decrypt(src);
return src;
}
Это не работает ... Обратите внимание, что я пытался написать класс PKCS7 на основе найденного мной класса Java.В пакете урагана, который я скачал, была только PKCS5.VB.NET не предоставил ни одного из тех же классов заполнения, что и у Hurlant.Я хотел бы использовать «None», но я не смог передать ошибку в VB.
Я думаю, что также может быть проблема с тем, как я преобразовываю строку в массив байтов в VB против Air.
Пожалуйста, помогите!