Шифрование в VB.NET с AES-256 и дешифрование в эфире - PullRequest
0 голосов
/ 28 июля 2011

Я пытаюсь зашифровать почтовый индекс в 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.

Пожалуйста, помогите!

1 Ответ

0 голосов
/ 29 июля 2011

проверьте этот пример кода, я не уверен, что это решение, которое вы ищете, или нет, http://www.obviex.com/samples/Encryption.aspx

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...