説明
特定のアルゴリズムおよびエンコード方法を使用して、文字列を暗号化します。
戻り値
文字列。元の文字列よりも長くなる場合があります。
カテゴリ
関数のシンタックス
Encrypt(string, key, encoding, algorithm, IV_Salt, iterations)
Decrypt、EncryptBinary、DecryptBinary
履歴
- ColdFusion(2023 リリース)アップデート 8 および ColdFusion(2021 リリース)アップデート 14:デフォルトのアルゴリズムが CFMX_COMPAT から AES/CBC/PKCS5Padding に変更されました。
- ColdFusion(2021 リリース):認証暗号化のサポートが追加されました。
- ColdFusion(2018 リリース):名前付きパラメーターが導入されました。
- ColdFusion 8:エンタープライズ版で RSA BSafe Crypto-J ライブラリを使用した暗号化がサポートされるようになりました。
- ColdFusion MX 7.01:IVorSalt パラメーターと iterations パラメーターが追加されました。
- ColdFusion MX 7:algorithm パラメーターと encoding パラメーターが追加されました。
パラメーター
パラメーター |
説明 |
---|---|
string |
暗号化する文字列です。 |
key |
文字列。文字列を暗号化するために使用するキーまたはシードです。
|
algorithm |
(オプション)文字列を暗号化するために使用するアルゴリズムです。 エンタープライズ版の ColdFusion では、RSA BSafe Crypto-J ライブラリがインストールされます。このライブラリを使用すると、FIPS-140 に準拠した強力な暗号化を利用できます。このライブラリでは、次のアルゴリズムを使用できます。
これらのアルゴリズムに加えて、標準版の ColdFusion に用意されているアルゴリズムも使用できます。 標準版の ColdFusion では、次のアルゴリズムを使用する暗号ライブラリがインストールされます。
これら以外の暗号アルゴリズムを使用するセキュリティプロバイダーをインストールした場合は、その暗号化/復号アルゴリズムを指定することもできます。 |
encoding |
(オプション)このパラメーターを指定する場合は、algorithm パラメーターも指定します。これは、データを文字列として表すために使用するバイナリエンコードです。
|
IV_Salt |
(オプション)このパラメーターは、他の暗号化ソフトウェアの動作と一致するように ColdFusion の暗号化動作を調整する場合に使用します。このパラメーターを指定する場合は、algorithm パラメーターも指定します。
|
iterations |
(オプション)パスワードをバイナリキーに変換するための繰り返し回数です。このパラメーターは、他の暗号化ソフトウェアの動作と一致するように ColdFusion の暗号化動作を調整する場合に使用します。このパラメーターを指定する場合は、同時に algorithm パラメーターで PBE(Password Based Encryption:パスワードベースの暗号化)アルゴリズムを指定します。ブロック暗号化アルゴリズムの場合は、このパラメーターを指定しないでください。データの暗号化と復号には同じ値を使用します。 |
使用方法
この関数では、文字列の暗号化と復号に同じキーを使用する、シンメトリカルなキーベースのアルゴリズムが使用されます。暗号化された文字列のセキュリティは、キーの機密性によって異なります。
ColdFusion で使用される、RSA BSafe Crypto-J ライブラリに含まれる FIPS-140 認定アルゴリズムには次のものがあります。一部のアルゴリズムは Encrypt 関数では使用されませんが、他の関数で使用されます。
AES - ECB、CBC、CFB(128)、OFB(128) - [128、192、256 ビットのキーサイズ]
AES - CTR
Diffie-Hellman Key Agreement
DSA
FIPS 186-2 General Purpose [(x-Change Notice); (SHA-1)]
FIPS 186-2 [(x-Change Notice)、(SHA-1)]
HMAC-SHAx(x は 1、224、256、384、または 512)
RSA PKCS#1 v1.5(署名、検証)(SHA-1、SHA-224、SHA-256、SHA-384、SHA-512)
Secure Hash Standard(SHA-1、SHA-224、SHA-256、SHA-384、SHA-512)
Triple DES - ECB、CBC、CFB(64 ビット)、および OFB(64 ビット)
RSA BSafe Crypto-J ライブラリに含まれるアルゴリズムは、エンタープライズ版で使用できます。一部のアルゴリズムを無効したいという場合もあります。DESX、RC5、および MD5PRNG アルゴリズムを無効にするには、ColdFusion Administrator の「Java と JVM」ページで次のように JVM 引数を指定します。
-Dcoldfusion.enablefipscrypto=true |
JBoss の WebSphere で ColdFusion を実行している場合は、FIPS-140 認定の暗号化方式を使用できません。
エンタープライズ版で IBM Lotus Sametime の Instant Messaging Gateway を使用する場合は、ColdFusion Administrator の「Java と JVM の設定」ページで次のように JVM 引数を指定して、FIPS-140 認定アルゴリズム以外の暗号化方式も使用できるようにします。
-Dcoldfusion.disablejsafe=true |
標準版では、デフォルトのアルゴリズム以外のすべてのアルゴリズムに対して JCE(Java Cryptography Extension)が使用され、Sun JCE のデフォルトセキュリティプロバイダーを含む Sun Java ランタイムがインストールされます。このプロバイダーには、「パラメーター」節で示したアルゴリズムが含まれています。JCE フレームワークには、他のプロバイダーの実装を使用するための機能も含まれています。ただし、アドビでは、サードパーティのセキュリティプロバイダーに対するテクニカルサポートは提供していません。
デフォルトのアルゴリズムは、ColdFusion 5 および ColdFusion MX で使用されていたものと同じです。ユーザーが関数のパラメーターとして渡すシードに基づいた擬似 32 ビットキーを使用する、XOR ベースのアルゴリズムが使用されます。このアルゴリズムは、使用可能な他のアルゴリズムに比べて安全性が劣ります。
例
次の例では、テキスト文字列を暗号化および復号します。暗号化アルゴリズムとエンコード方式を指定する必要があります。CFMX_COMPAT アルゴリズムで使用するキーシード用のフィールドもあります。CFMX_COMPAT 以外のすべてのアルゴリズムでは、シークレットキーが生成されます。
<h3>Encrypt の例</h3>
|
<cfscript> myMessage = "Message to encrypt" key = generateSecretKey('AES'); encryptedMsg = encrypt(myMessage,key,'AES', 'Base64'); writeOutput(encryptedMsg); </cfscript>
出力
JbRh2Ez58OJc9wpZUDefz0GZyDnA0/IMuV9qaRcFzCY=
例 2
<cfscript> // 文字列データ a = "abcd" // キーを生成します key = GenerateSecretKey("AES") iterations="AssoicatedData" randomIntegers = []; // SALT 値を生成します for ( i = 1 ; i <= 12 ; i++ ) { arrayAppend( randomIntegers, randRange( -128, 127, "SHA1PRNG" ) ); } initializationVector = javaCast( "byte[]", randomIntegers ) enc1 = Encrypt(string=a, key=key, encoding="UU", algorithm="AES/GCM/NoPadding", IV_Salt=initializationVector, iterations=iterations) writeDump(enc1) </cfscript>
出力
4Z1! >"1'E8=$3Y%'"KJ! /T-3S?[X