如何在Android设备上阅读DES加密文件内容(使用C#创建)

时间:2013-03-13 23:03:50

标签: c# android encryption des

我们有一堆内容已经在桌面端使用C#进行了DES加密。我们想在android应用程序上解密它们。尝试几乎所有编码,我们无法在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());

1 个答案:

答案 0 :(得分:0)

“感谢您的帮助。将CIPHER_ALGORITHM更改为”DES / CBC / NoPadding解决了我的问题。