ColdFusion 9.0 Resources |
EncryptBinaryHistoryColdFusion 8: Added support for encryption using the RSA BSafe Crypto-J library on Enterprise Edition. ColdFusion MX 7.01: Added this function. Parameters
UsageThis function uses a symmetric key-based algorithm, in which the same key is used to encrypt and decrypt binary data. The security of the encrypted data depends on maintaining the secrecy of the key. For all algorithms except the default algorithm, ColdFusion MX 7 uses the Java Cryptography Extension (JCE) and installs a Sun Java runtime that includes the Sun JCE default security provider. This provider includes the algorithms listed in the Parameters section. The JCE framework includes facilities for using other provider implementations; however, Adobe cannot provide technical support for third-party security providers. The default algorithm, which is the same as was used in ColdFusion 5 and ColdFusion MX, uses an XOR-based algorithm that uses a pseudo-random 32-bit key, based on a seed passed by the user as a function parameter. This algorithm is less secure than the other available algorithms. ExampleThe following example encrypts and decrypts binary data. It encrypts the binary data contained in a file and then decrypts the encrypted file. It lets you specify the encryption algorithm and encoding technique. It also has a field for a key seed to use with the CFMX_COMPAT algorithm. For all other algorithms, it generates a secret key. <h3>EncryptBinary Example</h3> <!--- Do the following if the form has been submitted. ---> <cfif IsDefined("Form.myfile")> <cffile file="#Form.myfile#" action="readBinary" variable="myData"> <cfscript> /* GenerateSecretKey does not generate key for the CFMX_COMPAT algorithm, so use the key from the form. */ if (Form.myAlgorithm EQ "CFMX_COMPAT") theKey=Form.MyKey; // For all other encryption techniques, generate a secret key. else theKey=generateSecretKey(Form.myAlgorithm); //Encrypt the string encrypted=encryptBinary(myData, theKey, Form.myAlgorithm); //Decrypt it 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#"> <!--- Display the values used for encryption and decryption, and the results. ---> <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> <!--- The input form. ---> <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> |