JavascriptとCryptoJSを使用してJavaアプリケーションで使用される暗号化を複製しようとしています。私はCryptoJSがキーの文字列を期待しているように、SecretKeySpecをどのように複製する必要があるのかよく分かりません。Java AES CryptoJSを使用したJavascriptの暗号化
public byte[] encrypt(byte[] origin)
{
String key = "testkey";
SecretKeySpec sks = new SecretKeySpec(convertAESKey(key), "AES");
Cipher cipher = Cipher.getInstance("AES/CBC/PKCS5Padding");
byte[] iv = new byte[16];
cipher.init(Cipher.ENCRYPT_MODE, sks, new IvParameterSpec(iv));
return cipher.doFinal(origin);
}
private byte[] convertAESKey(String key)
{
byte[] keyBytes;
keyBytes = key.getBytes("UTF-8");
byte[] keyBytes16 = new byte[16];
System.arraycopy(keyBytes, 0, keyBytes16, 0,
Math.min(keyBytes.length, 16));
return keyBytes16;
}
}
私のJSコードこれまで:ここ
は、私はJSで複製する必要があるのJavaの暗号化コードである
var iv = new Uint8Array(16);
var key = "testkey";
var encrypted = CryptoJS.AES.encrypt(
someByteArray,
key,
{
iv: iv,
mode: CryptoJS.mode.CBC
}
);
また、暗号の最終出力は暗号化されたバイト配列であります。 CryptoJSの最終出力は、cipherTextを持つオブジェクトのようです。出力をバイト配列として取得する方法はありますか?
暗号化されたレスポンスを文字列に変換してからバイト配列に変換するだけですが、これはJava暗号化の出力と一致しません。
ボックスからの暗号化を使用しても問題はありません。現在の実装がClient(Java)to Server(Java)であり、Client(Javascript)to Server(Java)にする必要があるため、問題はJava暗号化を複製しています。サーバーコードは変更できないため、暗号化を正確に一致させることが重要です。 – mildse7en