Decrypt

説明

Encrypt 関数によって暗号化された文字列など、標準の暗号化技術を使用して暗号化された文字列を復号します。

戻り値

復号された文字列

カテゴリ

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

関数のシンタックス

Decrypt(string, key, encoding, algorithm, IV_Salt, iterations)

関連項目

DuplicateEncrypt

履歴

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

  • 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/GCM/NoPadding:AES-GCM アルゴリズムです。
  • AES/CBC/PKCS5Padding:暗号化アルゴリズムです。

メモ:この関数に AES/GCM/NoPadding アルゴリズムを使用する際、An error occurred while trying to encrypt or decrypt your input string: Tag mismatch!(入力文字列の暗号化または復号中にエラーが発生しました:タグが一致しません)というエラーが表示された場合は、使用している SALT 値が間違っているか、iterations パラメーターの値が文字列の暗号化に使用されたものと一致しない可能性があります。

encoding

(オプション)このパラメーターを指定する場合は、algorithm パラメーターも指定します。これは、データを文字列として表すために使用するバイナリエンコードです。文字列を暗号化するときに使用したものと同じアルゴリズムでなければなりません。

  • Base64:IETF RFC 2045 で定義された Base64 アルゴリズムです。
  • Hex:バイト値を 16 進数で表す、A ~ F および 0 ~ 9 の文字です。
  • UU:UNIX 標準の UUEncode アルゴリズムです(デフォルト)。

IVorSalt

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

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

iterations

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

使用方法

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

<cfscript>
    myInfo={};
    myInfo.key = generateSecretKey(&quot;AES&quot;);
    myInfo.secret = &quot;my secret&quot;;
    myInfo.encrypted=encrypt(myInfo.secret, myInfo.key, &quot;AES&quot;, &quot;Base64&quot;);
    myInfo.decrypted=decrypt(myInfo.encrypted, myInfo.key, &quot;AES&quot;, &quot;Base64&quot;);
    writeDump(myInfo);
</cfscript>

出力

例 2

<cfscript>  
    // 文字列データ  
    a = &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 = Encrypt(string=a,   
                   key=key,   
                   encoding=&quot;UU&quot;,   
                   algorithm=&quot;AES/GCM/NoPadding&quot;,  
                   IV_Salt=initializationVector,   
                   iterations=iterations)  
    // 暗号化した文字列を復号します  
    dec1= Decrypt(string=enc1,   
                  key=key,   
                  encoding=&quot;UU&quot;,   
                  algorithm=&quot;AES/GCM/NoPadding&quot;,  
                  IV_Salt=initializationVector,   
                  iterations=iterations)  
    writeDump(dec1)  
</cfscript> 

出力

abcd 

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

新規ユーザーの場合

Adobe MAX 2025

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

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