C#コードをCFに変換しようとすると、次の行の翻訳が滞ります
StorageKey = 'abcd';
Convert.FromBase64String(StorageKey)
上記の行は、105,183,29のバイト配列を生成します
この行は、Azureの作成認証ヘッダーから取得されます。
System.Security.Cryptography.HMACSHA256 SHA256 = new System.Security.Cryptography.HMACSHA256(Convert.FromBase64String(StorageKey));
私はmsdnライブラリでFromBase64Stringメソッドを検索しましたが、頭上にあります。誰かが私を正しいColdfusionの方向に向けてくれることを願っています。
BinaryDecode(StorageKey、 "BASE64")を試しましたが、これは最も論理的な変換のように見えましたが、期待した結果ではない105-7329が返されました。
CF10 +については、以下のLeighの回答を参照してください。CF7-9ソリューションを求めている場合は、これが私の試みです。
var javaMsg = javacast("string", arguments.sigMsg).getBytes("UTF-8");
var javaKey = JavaCast("string", arguments.sigKey);
var myKey = createObject('java', 'javax.crypto.spec.SecretKeySpec' );
var mac = createObject('java', "javax.crypto.Mac");
var myKeyB64 = CreateObject("java", "org.apache.commons.codec.binary.Base64").decodeBase64(javaKey.getBytes());
var secret = myKey.Init(myKeyB64, 'HmacSHA256');
mac = mac.getInstance("HmacSHA256");
mac.init(secret);
</cfscript>
<cfdump var="#mac.doFinal(javaMsg)#">