DecryptBinary(input,key,[algorithm, prefix, 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:この関数が追加されました。
パラメーター
パラメーター |
説明 |
---|---|
input |
復号するバイナリデータです。 |
key |
文字列。CFMX_COMPAT アルゴリズムの場合、これはバイナリデータの暗号化に使用されたシードです。その他のアルゴリズムの場合は、generateSecretKey() メソッドで生成された文字列です。 |
algorithm |
(オプション)エンタープライズ版の ColdFusion では、RSA BSafe Crypto-J ライブラリがインストールされます。このライブラリを使用すると、FIPS-140 に準拠した強力な暗号化を利用できます。アルゴリズムの一覧については、Encrypt 関数を参照してください。ColdFusion Standard Edition では、次のアルゴリズムを使用する暗号化ライブラリがインストールされます。
|
prefix |
(オプション)このパラメーターは、他の暗号化ソフトウェアの動作と一致するように ColdFusion の暗号化動作を調整する場合に使用します。このパラメーターを指定する場合は、algorithm パラメーターも指定します。
|
iterations |
(オプション)パスワードをバイナリキーに変換するための繰り返し回数です。このパラメーターは、他の暗号化ソフトウェアの動作と一致するように ColdFusion の暗号化動作を調整する場合に使用します。このパラメーターを指定する場合は、同時に algorithm パラメーターで PBE(Password Based Encryption:パスワードベースの暗号化)アルゴリズムを指定します。ブロック暗号化アルゴリズムの場合は、このパラメーターを指定しないでください。データの暗号化と復号には同じ値を使用します。 |
使用方法
この関数では、データの暗号化と復号に同じキーを使用する、シンメトリカルなキーベースのアルゴリズムが使用されます。パラメーター値は、文字列をエンコードするときに使用した値と一致する必要があります。暗号化された文字列のセキュリティは、キーの機密性によって異なります。ColdFusion では、JCE(Java Cryptography Extension)を使用し、Sun JCE デフォルトセキュリティプロバイダーを含む Sun Java ランタイムがインストールされます。このプロバイダーには、「パラメーター」節で示したアルゴリズムが含まれています。JCE フレームワークには、他のプロバイダーの実装を使用するための機能も含まれています。ただし、アドビでは、サードパーティのセキュリティプロバイダーに対するテクニカルサポートは提供していません。
例
<h3>DecryptBinary の例</h3> < ! --- フォームが送信された場合は、以下を実行します。---> <cfif IsDefined("Form.myfile")> <cffile file="#Form.myfile#" action="readBinary" variable="myData"> <cfscript> /* GenerateSecretKey が CFMX_COMPAT アルゴリズムのキーを生成しないので、 フォームのキーを使用します。 */ if (Form.myAlgorithm EQ "CFMX_COMPAT") theKey=Form.MyKey; // その他の暗号化手法の場合は、シークレットキーを生成します。 else theKey=generateSecretKey(Form.myAlgorithm); // 文字列を暗号化します encrypted=encryptBinary(myData, theKey, Form.myAlgorithm); // 暗号化した文字列を復号します decrypted=decryptBinary(encrypted, theKey, Form.myAlgorithm); </cfscript> <cfset encfile="#Form.myfile#" & "_enc"> <cfset decfile="#Form.myfile#" & "_dec"> <cffile file="#encfile#" action="write" output="#encrypted#"> <cffile file="#decfile#" action="write" output="#decrypted#"> <! --- 暗号化と復号に使用した値とその結果を 表示します。 ---> <cfoutput> <b>The algorithm:</b> #Form.myAlgorithm#<br> <b>The key:</B> #theKey#<br> <br> <b>The InputFile:</b> #Form.myfile# <br> <br> <b>Encrypted:</b> #encfile#<br> <br> <b>Decrypted:</b> #decfile#<br> </cfoutput> </cfif> <!--- 入力フォーム ---> <form action="#CGI.SCRIPT_NAME#" method="post"> <b>Select the algorithm</b><br> <select size="1" name="myAlgorithm"> <option selected>CFMX_COMPAT</option> <option>AES</option> <option>DES</option> <option>DESEDE</option> </select><br> <br> <b>Input your key</b> (used for CFMX_COMPAT encryption only)<br> <input type = "Text" name = "myKey" value = "MyKey"><br> <br> <b>Enter filename to encrypt</b><br> <input type="text" name="myfile" value="Enter the path of the file to encrypt"><br> <input type = "Submit" value = "Encrypt file "> </form>
例 2
<cfscript> // バイナリデータ b = ToBinary("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 = EncryptBinary(binaryData=b, key=key, algorithm="AES/GCM/NoPadding", IV_Salt=initializationVector, iterations=iterations) // バイナリを復号します dec1=DecryptBinary(binaryData=enc1, key=key, algorithm="AES/GCM/NoPadding", prefix=initializationVector, iterations=iterations) writeDump(dec1) </cfscript>