Kann mit ColdFusion und HMAC-SHA1 keine gültige Signatur für API generieren

Ich habe eine Reihe anderer verwandter Posts zu diesem Thema durchgesehen und konnte sie problemlos replizieren. Ich kann jedoch mit meinen eigenen Daten nicht das erwartete Signaturergebnis erzielen, egal was ich versuche. Ich würde mich über jede Unterstützung sehr freuen. Hier sind die API-Anforderungen:

Umwandeln Sie die zu signierenden Daten von einer ASCII-Zeichenfolge in ein Byte-ArrayUmwandeln Sie Ihren geheimen Zugriffsschlüssel von einer Base64-Zeichenfolge in ein Byte-ArrayVerwenden Sie das in Schritt 1 erstellte Byte-Array als Schlüssel für einen HMAC-SHA1-Signierer.Berechnen Sie den HMAC-SHA1-Hash des in Schritt 2 erstellten Byte-Arrays. Das Ergebnis ist ein Byte-ArrayUmwandeln Sie das in Schritt 3 erstellte Byte-Array in eine Base64-codierte Zeichenfolge

ntsprechend der Dokumentation:

Angenommen, Ihr geheimer Zugriffsschlüssel lautet "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA ==".Die zu signierenden Daten werden mit "@" angenommehttp: //membersuite.com/contracts/IConciergeAPIService/WhoAmI00000000-0000-0000-0000-0000000000001111111111111111111111111111111"Signature sollte "2zsMYdHb / MJUeTjv5cQl5pBuIqU =" sein

Ich konnte diese Signatur nicht erhalten, obwohl ich verschiedene Methoden aus den anderen Posts ausprobiert habe. Beispielsweise

<cffunction name="hmacEncrypt" returntype="binary" access="public" output="false">
    <cfargument name="base64Key" type="string" required="true" default="AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA==">
    <cfargument name="signMessage" type="string" required="true" default="http://membersuite.com/contracts/IConciergeAPIService/WhoAmI00000000-0000-0000-0000-00000000000011111111-1111-1111-1111-111111111111">
    <cfargument name="encoding" type="string" default="UTF-8">      

     <cfset var messageBytes = JavaCast("string",arguments.signMessage).getBytes(arguments.encoding)>
     <cfset var keyBytes = binaryDecode(arguments.base64Key, "base64")>
     <cfset var key  = createObject("java","javax.crypto.spec.SecretKeySpec")>
     <cfset var mac  = createObject("java","javax.crypto.Mac")>
     <cfset key  = key.init(keyBytes,"HmacSHA512")>
     <cfset mac  = mac.getInstance(key.getAlgorithm())>
     <cfset mac.init(key)>
     <cfset mac.update(messageBytes)>

     <cfreturn mac.doFinal()>
</cffunction>

Dumping die Ausgabe dieser Funktion gibt mir keine Fehler, aber es stimmt auch nicht mit der erwarteten Ausgabe überein. Auch hier würde ich mich über jede Unterstützung oder Anregung in die richtige Richtung sehr freuen. Ich denke, ein Teil meiner Probleme liegt darin, wie ich den Schlüssel und die URL-Zeichenfolge codiere, aber ich bin nicht sicher. Vielen Dank im Voraus!

Antworten auf die Frage(2)

Ihre Antwort auf die Frage