У нас есть куча содержимого, которое уже было зашифровано 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());