试图将 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,这不是我的预期结果。
请参阅下面 Leigh 对 CF10+ 的回答,如果您在使用 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)#">