Created
June 10, 2015 11:59
-
-
Save anonymous/36a929d67b1a95897667 to your computer and use it in GitHub Desktop.
TryCF Gist
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<cffunction access="public" name="prepare3DESKey" returntype="string" output="false" hint="Prepare 3DES key for encryption."> | |
<cfargument name="key" type="string" default="" /> | |
<cfif len(key) eq 0> | |
<cfset key = generateSecretKey('DESEDE') /> | |
<cfelse> | |
<!--- if key is lower than 24 bytes; fill the empty bytes with NULL ---> | |
<cfloop from="#len(key)#" to="23" index="i"> | |
<!--- do NOT use chr(0). in CF it does not work ---> | |
<cfset key = key & urlDecode('%00') /> | |
</cfloop> | |
</cfif> | |
<cfreturn key /> | |
</cffunction> | |
<cfset key="#prepare3DESKey('62v01fVsCWHfRcW')#" /> | |
<cfdump var="#len(key)#" /> | |
<cfdump var="#key#" /> | |
<cffunction access="public" name="encrypt3DESCBC" returntype="string" output="false" hint="Encrypts a string based on a given key and initialization vector, using CF methods."> | |
<cfargument name="encrypting" type="string" required="true" /> | |
<cfargument name="key" type="string" default="" /> | |
<cfargument name="iv" type="string" default="0000000000000000" /> | |
<cfreturn encrypt( | |
encrypting, | |
toBase64(prepare3DESKey(key)), | |
'DESEDE/CBC/PKCS5Padding', | |
'Base64', | |
BinaryDecode(iv, 'Hex') | |
) /> | |
</cffunction> | |
<cffunction access="public" name="encrypt3DESCBC_Java" returntype="string" output="false" hint="Encrypts a string based on a given key and initialization vector, using Java functionality."> | |
<cfargument name="encrypting" type="string" required="true" /> | |
<cfargument name="key" type="string" default="" /> | |
<cfargument name="iv" type="string" default="0000000000000000" /> | |
<cfset iv = BinaryDecode(iv, 'Hex') /> | |
<cfset Cipher = createObject('java', 'javax.crypto.Cipher') /> | |
<cfset jcipher = Cipher.getInstance("DESede/CBC/PKCS5Padding") /> | |
<cfset IvParameterSpec = createObject('java', 'javax.crypto.spec.IvParameterSpec') /> | |
<cfset jiv = IvParameterSpec.init(iv) /> | |
<cfset SecretKeySpec = createObject('java', 'javax.crypto.spec.SecretKeySpec') /> | |
<cfset jkey = SecretKeySpec.init( | |
prepare3DESKey(key).getBytes(), | |
"DESede" | |
) /> | |
<cfset jcipher.init(Cipher.ENCRYPT_MODE, jkey, jiv) /> | |
<cfreturn toBase64(jcipher.doFinal( | |
encrypting.getBytes() | |
)) /> | |
<cfreturn "test" /> | |
</cffunction> | |
<cfdump var="#encrypt3DESCBC('66866996699', '62v01fVsCWHfRcW')#" /> |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment