Как читать содержимое зашифрованного файла DES (созданного с помощью C#) на устройствах Android

У нас есть куча содержимого, которое уже было зашифровано DES с помощью C# на стороне рабочего стола. Мы хотим расшифровать их в приложении для Android. Перепробовав почти все кодировки, мы не смогли получить точные расшифрованные значения на стороне андроида. Не могли бы вы рассказать нам, что не так на стороне Android? Кстати, мы знаем, что DES — не лучшее решение для шифрования. Но содержимое было создано ранее, и у нас нет возможности использовать другой механизм.

Вот код шифрования, написанный на C#.

using (FileStream outputStream = new FileStream(strOutputFileName, FileMode.OpenOrCreate, FileAccess.ReadWrite))
{
    DESCryptoServiceProvider cryptic = new DESCryptoServiceProvider();
    cryptic.Key = ASCIIEncoding.ASCII.GetBytes(passKey);
    cryptic.IV = ASCIIEncoding.ASCII.GetBytes(passKey);
    CryptoStream crStream = new CryptoStream(outputStream, cryptic.CreateEncryptor(), CryptoStreamMode.Write);
    crStream.Write(fileBuffer, 0, fileBuffer.Length);
    crStream.Close();
}

Вот часть расшифровки на стороне Android

String CIPHER_ALGORITHM = "DES/CFB8/NoPadding";
SecretKeySpec key5= new SecretKeySpec("passkey*".getBytes("UTF-8"), 
    CIPHER_ALGORITHM);

String ivString = "passkey*";
byte[] ivByte = ivString.getBytes("UTF-8");
IvParameterSpec iv5 = new IvParameterSpec(ivByte);  

Cipher c = Cipher.getInstance(CIPHER_ALGORITHM);
c.init(Cipher.DECRYPT_MODE, key5, iv5);

CipherInputStream cis = new CipherInputStream(
    new FileInputStream("/sdcard/test_folder/test.file"), c);

BufferedReader br = new BufferedReader(new InputStreamReader(cis));
Log.d("SONUC2", " " +br.readLine());

person Servet Koç    schedule 13.03.2013    source источник
comment
На стороне Android не удалось получить точные расшифрованные значения › Вы получаете ошибки? Вы получаете большинство правильных значений, но какой-то мусор в начале или в конце?   -  person Duncan Jones    schedule 14.03.2013
comment
При расшифровке в приложении для Android исходное значение не соответствует расшифрованному значению. Получены неверные значения   -  person Servet Koç    schedule 14.03.2013
comment
Примечание. Я упростил ваш код Java, чтобы удалить всю обработку исключений — нам не нужно видеть это, чтобы понять, что вы делаете.   -  person Duncan Jones    schedule 14.03.2013
comment
Ваш код шифрования не указывает CFB8 или отсутствие заполнения. Предположительно, он использует некоторые значения C# по умолчанию. Вы должны проверить эти значения по умолчанию и установить такие же значения в Android. ОАК встречается чаще, чем CFB8, и наличие внутривенного введения также может указывать на ОАК. Отсутствие заполнения может дать вам мусор в конце любого расшифрованного фрагмента.   -  person rossum    schedule 14.03.2013


Ответы (1)


"Спасибо за вашу помощь. Изменение CIPHER_ALGORITHM на "DES/CBC/NoPadding решило мою проблему.

person Servet Koç    schedule 15.03.2013