Сам делаю HMAC-SHA1. Лучшее, что я могу сказать, это то, что я нашел эту старую функцию. Работал отлично для того, что я делаю до сих пор. Забыл, где я нашел это, таким образом я не могу поверить автору.
Для вашего Base 64 ... запустите эту функцию в вашем шифровании, затем просто выполните cfset newString = toBase64 (oldString) для того, что возвращается.
<cffunction name="hmacEncrypt" returntype="binary" access="public" output="false">
<cfargument name="signKey" type="string" required="true" />
<cfargument name="signMessage" type="string" required="true" />
<cfargument name="algorithm" type="string" default="HmacSHA1" />
<cfargument name="charset" type="string" default="UTF-8" />
<cfset var msgBytes = charsetDecode(arguments.signMessage, arguments.charset) />
<cfset var keyBytes = charsetDecode(arguments.signKey, arguments.charset) />
<cfset var keySpec = createObject("java","javax.crypto.spec.SecretKeySpec") />
<cfset var mac = createObject("java","javax.crypto.Mac") />
<cfset key = keySpec.init(keyBytes, arguments.algorithm) />
<cfset mac = mac.getInstance(arguments.algorithm) />
<cfset mac.init(key) />
<cfset mac.update(msgBytes) />
<cfreturn mac.doFinal() />
</cffunction>