3

javax.crypto パッケージを使用する代わりに、JavaScript で以下のコードを実装したいと考えています。

以下のコードは、AES を使用してキーを生成します。

    KeyGenerator kgen;
    String key;
    try {
        kgen = KeyGenerator.getInstance("AES");
        kgen.init(128);
        SecretKey secretkey = kgen.generateKey();
        BASE64Encoder encode = new BASE64Encoder();
        key = encode.encode(secretkey.getEncoded());
    } catch (NoSuchAlgorithmException e) {
       // exceptionLogFile(e, null);
        e.printStackTrace();
        key = "Error@SecretKeyGeneration: No Such Algorith Exception. " + e.getMessage();
    } catch (Exception e) {
       // exceptionLogFile(e, null);
        e.printStackTrace();
        key = "Error@SecretKeyGeneration: " + e.getMessage();
    }
    return key;

これはJavaで完全に機能しています。JavaScriptで代替案を提案できますか。

私はCrypto.jsについて知りましたが、ここでどのように使用できるか、理解していません。

暗号化と復号化については、私が使用して"AES/ECB/PKCS5Padding"いるので、javascript コードと互換性がありますか?

助けてください。

前もって感謝します。

4

1 に答える 1

3

AES キーは、単純にランダムなバイトで構成されています。したがって、128 バイトのキーの場合は、次のようにするだけです。

var key = CryptoJS.lib.WordArray.random(128/8);

そしてそれをエンコードするには:

var keyBase64 = CryptoJS.enc.Base64.stringify(key);

もちろん、キーは以前に生成したものと同じではありません。そのためには、以前に生成された base 64 でエンコードされたキーをデコードする必要があります。


キーを使用するには、明示的なキー パラメータを使用します。

var encrypted = CryptoJS.AES.encrypt("Message", key, { mode: CryptoJS.mode.ECB});

PKCS#7 パディング (PKCS#5 パディングと同じ) は既にデフォルトであり、ECB は IV を使用しません。

于 2016-12-03T10:40:52.523 に答える