Decrypt(string, key, encoding, algorithm, IV_Salt, iterations)
関連項目
履歴
- 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 パラメーターが追加されました。
パラメーター
パラメーター |
説明 |
---|---|
encrypted_string |
復号する文字列です。 |
key |
文字列。CFMX_COMPAT アルゴリズムの場合、これは文字列の暗号化に使用されたシードです。その他のアルゴリズムの場合は、generateSecretKey() メソッドで生成された文字列です。 |
algorithm |
(オプション)エンタープライズ版の ColdFusion では、RSA BSafe Crypto-J ライブラリがインストールされます。このライブラリを使用すると、FIPS-140 に準拠した強力な暗号化を利用できます。アルゴリズムの一覧については、Encrypt 関数を参照してください。ColdFusion スタンダード版では、次のアルゴリズムを使用する暗号化ライブラリがインストールされます。
メモ:この関数に AES/GCM/NoPadding アルゴリズムを使用する際、An error occurred while trying to encrypt or decrypt your input string: Tag mismatch!(入力文字列の暗号化または復号中にエラーが発生しました:タグが一致しません)というエラーが表示された場合は、使用している SALT 値が間違っているか、iterations パラメーターの値が文字列の暗号化に使用されたものと一致しない可能性があります。 |
encoding |
(オプション)このパラメーターを指定する場合は、algorithm パラメーターも指定します。これは、データを文字列として表すために使用するバイナリエンコードです。文字列を暗号化するときに使用したものと同じアルゴリズムでなければなりません。
|
IVorSalt |
(オプション)このパラメーターは、他の暗号化ソフトウェアの動作と一致するように ColdFusion の暗号化動作を調整する場合に使用します。このパラメーターを指定する場合は、algorithm パラメーターも指定します。
|
iterations |
(オプション)パスワードをバイナリキーに変換するための繰り返し回数です。このパラメーターは、他の暗号化ソフトウェアの動作と一致するように ColdFusion の暗号化動作を調整する場合に使用します。このパラメーターを指定する場合は、同時に algorithm パラメーターで PBE(Password Based Encryption:パスワードベースの暗号化)アルゴリズムを指定します。ブロック暗号化アルゴリズムの場合は、このパラメーターを指定しないでください。データの暗号化と復号には同じ値を使用します。 |
使用方法
この関数では、文字列の暗号化と復号に同じキーを使用する対称キーベースのアルゴリズムが使用されます。パラメーター値は、文字列をエンコードするときに使用した値と一致する必要があります。暗号化された文字列のセキュリティは、キーの機密性によって異なります。ColdFusion では、JCE(Java Cryptography Extension)を使用し、Sun JCE デフォルトセキュリティプロバイダーを含む Sun Java ランタイムがインストールされます。このプロバイダーには、「パラメーター」節で示したアルゴリズムが含まれています。JCE フレームワークには、他のプロバイダーの実装を使用するための機能も含まれています。ただし、アドビでは、サードパーティのセキュリティプロバイダーに対するテクニカルサポートは提供していません。
例
<cfscript> myInfo={}; myInfo.key = generateSecretKey("AES"); myInfo.secret = "my secret"; myInfo.encrypted=encrypt(myInfo.secret, myInfo.key, "AES", "Base64"); myInfo.decrypted=decrypt(myInfo.encrypted, myInfo.key, "AES", "Base64"); writeDump(myInfo); </cfscript>
出力
例 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) // 暗号化した文字列を復号します dec1= Decrypt(string=enc1, key=key, encoding="UU", algorithm="AES/GCM/NoPadding", IV_Salt=initializationVector, iterations=iterations) writeDump(dec1) </cfscript>
出力
abcd