以下に示すようにJSONをJavaScriptで暗号化しようとしましたが、暗号化されています。 "obj"はJSONのデータですが、なぜ "ency_key"なのかわからないので、私はgoogleのどこかでこれを辿り、そのようなStringを渡しました。javax.crypto.BadPaddingException:最終ブロックが適切に埋められていないと仮定します。例外
var obj1 = CryptoJS.AES.encrypt(obj,'ency_key').toString();
$.ajax({
url: "web/enyDcyData",
"type": "POST",
async:true,
data:{
json:obj1,
}
しかし、私はjavaでデータを復号化できませんでした。私は以下のようにJavaで試しました。最終的なブロックが正しくパディングされていない場合例外:例外:"doFinal(base64Decode(ency_data));" 私は間違いを犯しました。この問題を解決するのを手伝ってください。
public static String decrypt(String ency_data)
SecretKeyFactory keyFac = SecretKeyFactory.getInstance(one);
SecretKey seckey = keyFac.generateSecret(new PBEKeySpec(two));
Cipher cipher = Cipher.getInstance(one);
pbeCipher.init(Cipher.DECRYPT_MODE, seckey , new PBEParameterSpec(SALT, 20));
byte[] res = cipher.doFinal(base64Decode(ency_data));
String decryptedValue = new String(res,"UTF-8");
}
private static byte[] base64Decode(String ency_data) throws IOException {
return new BASE64Decoder().decodeBuffer(ency_data);
}
_「Javaではさまざまな方法を試しましたが、別のエラーが発生しています」_それでは(少なくとも1つは) – Andreas
あなたのコメントから、JavaScript側でどのようなキーが使用されているか分かりませんしたがって、Java側の 'keyFac.generateSecret()'から同じキーを取得しているかどうかをチェックすることさえできません。私は、暗号に関する質問をするための基本的な前提条件は、JavaScript側で暗号化に使用している鍵が、Java側で復号化に使用しているのと同じ鍵であることを検証できることです。あなたの出力は、(他の多くのエラーと同様に)異なるキーを使用することと一貫しています...あなたがそれを排除できなければ、私たちは本当にあなたを助けることができません。 「1つ」でもAESを選択できますか? – lockcmpxchg8b