JCE 暗号化

JCE 戦略では、2 つの方法で暗号化機能を使用できます。

  • PBE (パスワードベースの暗号化): 暗号化パスワードのみを指定してコンテンツを暗号化/署名する。

  • キーベースの暗号化: PGP および XML 暗号化のしくみと似ていますが、対称キーまたは非対称キーを設定して、暗号化/署名操作を実行できます。

PBE

この方法では、指定されたパスワードにハッシュ関数を適用して、標準暗号化アルゴリズムと互換性のある対称キーを生成します。PBE で必要なのはパスワードのみであるため、PBE 操作にはグローバル設定要素は必要ありません。

例: PBE 暗号化
<crypto:jce-encrypt-pbe password="a-Sup3r_Secure-Passw0rd"/>

アルゴリズムを指定しない場合、PBEWithHmacSHA256AndAES_128 が使用されます。

例: PBE 復号化
<crypto:jce-decrypt-pbe algorithm="PBEWithHmacSHA256AndAES_128" password="a-Sup3r_Secure-Passw0rd"/>
例: PBE 署名
<crypto:jce-sign-pbe password="a-Sup3r_Secure-Passw0rd"/>

アルゴリズムを指定しない場合、PBEWithHmacSHA256 が使用されます。

例: PBE 署名検証
<crypto:jce-validate-pbe password="a-Sup3r_Secure-Passw0rd" algorithm="PBEWithHmacSHA256" expected="#[vars.expectedSignature]"/>

想定されるパラメータで、メッセージの検証時に比較する署名を定義します。

キーベースの暗号化

このセクションでは、キーベースの暗号化の例を示します。

Configuration (設定)

この例では、JCE 設定で異なる種別のキーがあるキーストアが定義されています。

例: JCE 設定
<crypto:jce-config name="jceConfig" keystore="jce/keys.jceks" password="123456" type="JCEKS">
    <crypto:jce-key-infos>
        <crypto:jce-symmetric-key-info keyId="aes128" alias="aes128" password="123456"/>
        <crypto:jce-symmetric-key-info keyId="blowfish" alias="blowfish" password="123456"/>
        <crypto:jce-symmetric-key-info keyId="hmacsha256" alias="hmacsha256" password="123456"/>
        <crypto:jce-asymmetric-key-info keyId="rsa" alias="myrsakey" password="123456"/>
        <crypto:jce-asymmetric-key-info keyId="dsa" alias="mydsakey" password="123456"/>
    </crypto:jce-key-infos>
</crypto:jce-config>

非対称

例: 非対称暗号化
<crypto:jce-encrypt config-ref="jceConfig" keyId="rsa" algorithm="RSA"/>
例: 非対称復号化
<crypto:jce-decrypt config-ref="jceConfig" keyId="rsa" algorithm="RSA"/>

対称

例: 対称暗号化
<crypto:jce-encrypt config-ref="jceConfig" keyId="aes128" algorithm="AES"/>
例: 対称復号化
<crypto:jce-decrypt config-ref="jceConfig" keyId="aes128" algorithm="AES"/>

署名

例: メッセージの署名
<crypto:jce-sign config-ref="jceConfig" keyId="dsa" algorithm="SHA256withDSA"/>
例: 署名の検証
<crypto:jce-validate config-ref="jceConfig" keyId="dsa" algorithm="SHA256withDSA" expected="#[vars.expectedSignature]"/>

想定されるパラメータで、メッセージの検証時に比較する署名を定義します。

Was this article helpful?

💙 Thanks for your feedback!

Edit on GitHub