EncryptBinary

説明

特定のアルゴリズムおよびエンコード方法を使用して、バイナリデータを暗号化します。

戻り値

バイナリデータ

カテゴリ

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

関数のシンタックス

EncryptBinary(binaryData, key, algorithm, IV_Salt, iterations) 

関連項目

DecryptDecryptBinaryEncrypt

履歴

  • ColdFusion(2023 リリース)アップデート 8 および ColdFusion(2021 リリース)アップデート 14:デフォルトのアルゴリズムが CFMX_COMPAT から AES/CBC/PKCS5Padding に変更されました。
  • ColdFusion(2021 リリース):認証暗号化のサポートが追加されました。
  • ColdFusion 8:エンタープライズ版で RSA BSafe Crypto-J ライブラリを使用した暗号化がサポートされるようになりました。
  • ColdFusion MX 7.01:この関数が追加されました。

パラメーター

パラメーター

説明

bytes

暗号化するバイナリデータです。

key

文字列。文字列を暗号化するために使用するキーまたはシードです。

  • CFMX_COMPAT アルゴリズムの場合、任意の数の文字を任意に組み合わせて、32 ビットの暗号化キーを生成するためのシードとして使用します。
  • その他のアルゴリズムの場合は、そのアルゴリズムで使用する形式のキーです。これらのアルゴリズムでは、GenerateSecretKey 関数を使用してキーを生成します。

algorithm

(オプション)文字列の復号化に使用するアルゴリズムです。エンタープライズ版の ColdFusion では、RSA BSafe Crypto-J ライブラリがインストールされます。このライブラリを使用すると、FIPS-140 に準拠した強力な暗号化を利用できます。アルゴリズムの一覧については、Encrypt 関数を参照してください。ColdFusion スタンダード版では、次のアルゴリズムを使用する暗号化ライブラリがインストールされます。

  • 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 アルゴリズムです。
  • GCM:Galois/Counter モード(GCM)暗号化アルゴリズムです。  
  • NoPadding:NOPADDING AES 128 ビット暗号化アルゴリズムです。これら以外の暗号アルゴリズムを使用するセキュリティプロバイダーをインストールした場合は、その暗号化/復号アルゴリズムを指定することもできます。
  • AES/CBC/PKCS5Padding:暗号化アルゴリズムです。

IVorSalt

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

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

iterations

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

使用方法

この関数では、バイナリデータの暗号化と復号に同じキーを使用する、シンメトリカルなキーベースのアルゴリズムが使用されます。暗号化されたデータのセキュリティは、キーの機密性によって異なります。デフォルトのアルゴリズム以外のすべてのアルゴリズムについて、ColdFusion では JCE(Java Cryptography Extension)を使用し、Sun JCE デフォルトセキュリティプロバイダーを含む Sun Java ランタイムがインストールされます。このプロバイダーには、「パラメーター」節で示したアルゴリズムが含まれています。JCE フレームワークには、他のプロバイダーの実装を使用するための機能が含まれています。ただし、アドビでは、サードパーティのセキュリティプロバイダーに対するテクニカルサポートは提供していません。デフォルトのアルゴリズムは、ColdFusion 5 および ColdFusion MX で使用されていたものと同じです。ユーザーが関数パラメーターとして渡すシードに基づいた擬似乱数 32 ビットキーを使用する、XOR ベースのアルゴリズムが使用されます。このアルゴリズムは、使用可能な他のアルゴリズムに比べて安全性が劣ります。

次の例では、バイナリデータを暗号化および復号します。ファイルに含まれているバイナリデータを暗号化し、暗号化されたファイルを復号します。暗号化アルゴリズムとエンコード方式を指定する必要があります。CFMX_COMPAT アルゴリズムで使用するキーシード用のフィールドもあります。CFMX_COMPAT 以外のすべてのアルゴリズムでは、シークレットキーが生成されます。

<h3>EncryptBinary の例</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(&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)  
    writeDump(enc1)  
</cfscript> 

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

新規ユーザーの場合

Adobe MAX 2025

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

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