DecryptBinary

説明

指定されたキー、値、アルゴリズム、ソルトおよび繰り返しを使用して、暗号化されたバイナリデータを復号します。

戻り値

復号されたバイナリデータ

カテゴリ

セキュリティ関数文字列関数

関数のシンタックス

DecryptBinary(input,key,[algorithm, prefix, iterations])

関連項目

DuplicateEncryptDecrypt

履歴

  • 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 では、次のアルゴリズムを使用する暗号化ライブラリがインストールされます。

  • CFMX_COMPAT:ColdFusion MX およびそれ以前のリリースで使用されるアルゴリズムです。このアルゴリズムは、最も安全性が低いオプションです(デフォルト)。
  • AES:NIST(National Institute of Standards and Technology:米国標準技術局)FIPS-197 で定義された Advanced Encryption Standard です。
  • BLOWFISH:Bruce Schneier 氏が定義した Blowfish アルゴリズムです。
  • DES:NIST FIPS-46-3 で定義された Data Encryption Standard アルゴリズムです。
  • DESEDE:NIST FIPS-46-3 で定義された Triple DES アルゴリズムです。
    これら以外の暗号アルゴリズムを使用するセキュリティプロバイダーをインストールした場合は、その暗号化/復号化アルゴリズムを指定することもできます。
  • AES/CBC/PKCS5Padding:暗号化アルゴリズムです。

prefix

(オプション)このパラメーターは、他の暗号化ソフトウェアの動作と一致するように ColdFusion の暗号化動作を調整する場合に使用します。このパラメーターを指定する場合は、algorithm パラメーターも指定します。

  • ブロック暗号化アルゴリズムの場合:アルゴリズムで使用するバイナリ初期化ベクター値です。このアルゴリズムには、ECB 以外のフィードバックモードが含まれている必要があります。これは、アルゴリズムのブロックサイズとまったく同じサイズのバイナリ値である必要があります。
  • パスワードベースの暗号化アルゴリズムの場合:パスワードをキーに変換するためのバイナリのソルト値です。

iterations

(オプション)パスワードをバイナリキーに変換するための繰り返し回数です。このパラメーターは、他の暗号化ソフトウェアの動作と一致するように ColdFusion の暗号化動作を調整する場合に使用します。このパラメーターを指定する場合は、同時に algorithm パラメーターで PBE(Password Based Encryption:パスワードベースの暗号化)アルゴリズムを指定します。ブロック暗号化アルゴリズムの場合は、このパラメーターを指定しないでください。データの暗号化と復号には同じ値を使用します。

使用方法

この関数では、データの暗号化と復号に同じキーを使用する、シンメトリカルなキーベースのアルゴリズムが使用されます。パラメーター値は、文字列をエンコードするときに使用した値と一致する必要があります。暗号化された文字列のセキュリティは、キーの機密性によって異なります。ColdFusion では、JCE(Java Cryptography Extension)を使用し、Sun JCE デフォルトセキュリティプロバイダーを含む Sun Java ランタイムがインストールされます。このプロバイダーには、「パラメーター」節で示したアルゴリズムが含まれています。JCE フレームワークには、他のプロバイダーの実装を使用するための機能も含まれています。ただし、アドビでは、サードパーティのセキュリティプロバイダーに対するテクニカルサポートは提供していません。

<h3>DecryptBinary の例</h3> 
< ! --- フォームが送信された場合は、以下を実行します。---> 
<cfif IsDefined(&quot;Form.myfile&quot;)> 
<cffile file=&quot;#Form.myfile#&quot; action=&quot;readBinary&quot; variable=&quot;myData&quot;> 
<cfscript> 
/* GenerateSecretKey が CFMX_COMPAT アルゴリズムのキーを生成しないので、 
フォームのキーを使用します。 
*/ 
if (Form.myAlgorithm EQ &quot;CFMX_COMPAT&quot;) 
theKey=Form.MyKey; 
// その他の暗号化手法の場合は、シークレットキーを生成します。 
else 
theKey=generateSecretKey(Form.myAlgorithm); 
// 文字列を暗号化します 
encrypted=encryptBinary(myData, theKey, Form.myAlgorithm); 
// 暗号化した文字列を復号します 
decrypted=decryptBinary(encrypted, theKey, Form.myAlgorithm); 
</cfscript> 
<cfset encfile=&quot;#Form.myfile#&quot; & &quot;_enc&quot;> 
<cfset decfile=&quot;#Form.myfile#&quot; & &quot;_dec&quot;> 
<cffile file=&quot;#encfile#&quot; action=&quot;write&quot; output=&quot;#encrypted#&quot;> 
<cffile file=&quot;#decfile#&quot; action=&quot;write&quot; output=&quot;#decrypted#&quot;> 
<! --- 暗号化と復号に使用した値とその結果を 
表示します。 ---> 
<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=&quot;#CGI.SCRIPT_NAME#&quot; method=&quot;post&quot;> 
<b>Select the algorithm</b><br> 
<select size=&quot;1&quot; name=&quot;myAlgorithm&quot;> 
<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 = &quot;Text&quot; name = &quot;myKey&quot; value = &quot;MyKey&quot;><br> 
<br> 
<b>Enter filename to encrypt</b><br> 
<input type=&quot;text&quot; name=&quot;myfile&quot; value=&quot;Enter the path of the file to encrypt&quot;><br> 
<input type = &quot;Submit&quot; value = &quot;Encrypt file &quot;> 
</form>

例 2

<cfscript>  
    // バイナリデータ  
    b = ToBinary(&quot;abcd&quot;)  
    // キーを生成します  
    key = GenerateSecretKey(&quot;AES&quot;)  
    iterations=&quot;AssoicatedData&quot;  
    randomIntegers = [];  
    // SALT 値を生成します  
    for ( i = 1 ; i <= 12 ; i++ ) {  
        arrayAppend( randomIntegers, randRange( -128, 127, &quot;SHA1PRNG&quot; ) );  
    }  
    initializationVector = javaCast( &quot;byte[]&quot;, randomIntegers )  
    // バイナリを暗号化します  
    enc1 = EncryptBinary(binaryData=b,   
                   key=key,   
                   algorithm=&quot;AES/GCM/NoPadding&quot;,  
                   IV_Salt=initializationVector,   
                   iterations=iterations)  
    // バイナリを復号します  
    dec1=DecryptBinary(binaryData=enc1,   
                key=key,   
                algorithm=&quot;AES/GCM/NoPadding&quot;,  
                prefix=initializationVector,  
                iterations=iterations)  
    writeDump(dec1)      
</cfscript> 

ヘルプをすばやく簡単に入手

新規ユーザーの場合

Adobe MAX 2025

Adobe MAX Japan
クリエイターの祭典

2025 年 2 月 13 日
東京ビッグサイト