我们有一堆内容已经在桌面端使用 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();
}
这里是安卓端的解密部分
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());