2013-03-13 19 views
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()); 
+0

「*我們無法在android端獲得確切的解密值*」>您是否遇到錯誤?你是否獲得了大部分正確的值,但是在開始或結束時會有一些垃圾? – 2013-03-14 08:35:24

+0

**當我們在android應用程序上解密時,原始值與解密值不匹配。獲得不正確的值** – 2013-03-14 10:32:31

+0

注意:我簡化了您的Java代碼以刪除所有異常處理 - 我們不需要明白這一點就能理解您在做什麼。 – 2013-03-14 10:49:50

回答

0

解密部分 「感謝您的幫助。改變CIPHER_ALGORITHM爲」 DES/CBC/NoPadding解決我的問題。

相關問題