0

デスクトップ側で 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());
4

1 に答える 1

0

"ご協力ありがとうございます。CIPHER_ALGORITHM を "DES/CBC/NoPadding に変更すると問題が解決しました。

于 2013-03-15T15:06:00.533 に答える