0
我們有一堆內容已經在桌面端使用C#進行了DES加密。我們想在android應用程序中解密它們。嘗試幾乎所有的編碼,我們無法得到android方面的確切解密值。你能告訴我們在android方面有什麼問題嗎?順便說一下,我們知道DES不是加密的最佳解決方案。但是,內容是以前創建的,我們沒有選擇使用其他機制。如何在Android設備上讀取DES加密文件內容(使用C#創建)
這裏是用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());
「*我們無法在android端獲得確切的解密值*」>您是否遇到錯誤?你是否獲得了大部分正確的值,但是在開始或結束時會有一些垃圾? – 2013-03-14 08:35:24
**當我們在android應用程序上解密時,原始值與解密值不匹配。獲得不正確的值** – 2013-03-14 10:32:31
注意:我簡化了您的Java代碼以刪除所有異常處理 - 我們不需要明白這一點就能理解您在做什麼。 – 2013-03-14 10:49:50