2016-12-26 10 views
0

こんにちはみんな、復号化音声ファイルの内容

私は、Androidでファイルの内容を暗号化し、サーバーにアップロードして、NodeJSサービスとそれを解読するために必要なプロジェクトに取り組んでいます。

JavaとNodeJSのAESに基づいたいくつかのプロジェクトを見て、NodeJSではなくJavaで機能するものを見つけました。

public static String encrypt(String encodeKey, String inputFile) throws Exception { 

    byte[] input = getStringFromFile(inputFile).toString().getBytes("utf-8"); 

    MessageDigest md = MessageDigest.getInstance("MD5"); 
    byte[] thedigest = md.digest(encodeKey.getBytes("UTF-8")); 
    SecretKeySpec skc = new SecretKeySpec(thedigest, "AES/ECB/PKCS5Padding"); 
    Cipher cipher = Cipher.getInstance("AES"); 
    cipher.init(Cipher.ENCRYPT_MODE, skc); 

    byte[] cipherText = new byte[cipher.getOutputSize(input.length)]; 
    int ctLength = cipher.update(input, 0, input.length, cipherText, 0); 
    String data = Base64.encodeToString(cipherText, Base64.DEFAULT); 

    Log.d("Crypto | Length", String.valueOf(ctLength)); 
    Log.d("Crypto | Keypass", encodeKey); 

    return data; 
} 

そしてNodeJSのコード:

var 
    decipher = crypto.createDecipher('aes-128-ecb', encryption_key), 
    chunks = []; 

    chunks.push(decipher.update(new Buffer(fullBuffer, "base64").toString("binary"))); 
    chunks.push(decipher.final('binary')); 
    var decrypted = chunks.join(""); 

あなたが見ることができるように、私が作成していたファイルのそれぞれについて、ここで

は、Javaのコードですsaltのための新しいkey-hash(復号化と暗号化の場合と同じです)。

デジタル封筒ルーチン:EVP_DecryptFinal_ex:間違った最後のブロック長あなたが上がらない

答えて

0

私の問題は、私はそれを解読しようとしているときに私はNodeJSからこのエラーを取得していますということですJava Cipherクラスを正しく使用してください。 doFinalメソッドに電話する必要があります。とにかく断片的な暗号化を行っていないので、あなたが、ciphertextの前のサイズで済ますupdateへの呼び出しを排除し、単に

byte [] cipherText = cipher.doFinal(input); 
+0

を呼び出すことができますこれは、アップデートの一部であるか、またはそれに置き換える必要がありますか? –

+0

がそれに置き換えられました。 –