You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在AS3(AIR桌面端)计算与openssl结果一致的HMAC SHA256值

AS3 AIR桌面端HMAC SHA256计算实现方案

测试用例校验标准

你给出的Linux验证命令输出结果可作为校验基准:

[linux]$ echo -n "symbol=LTCBTC&side=BUY&type=LIMIT&timeInForce=GTC&quantity=1&price=0.1&recvWindow=5000&timestamp=1499827319559" | openssl dgst -sha256 -hmac "NhqPtmdSJYdKjVHjA7PZj4Mge3R5YNiP1e3UZjInClVN65XAbvqqM6A7H5fATj0j"
(stdin)= c8db56825ae71d6d79447849e617115f4a920fa2acdcab2b053c4b2838bd6b71

核心实现代码

AS3中可通过as3crypto加密库的相关类实现,和openssl计算结果完全对齐的代码如下:

// 引入依赖类
import com.hurlant.crypto.hash.HMAC;
import com.hurlant.crypto.hash.SHA256;
import flash.utils.ByteArray;
import com.hurlant.util.Hex;

/**
 * 计算字符串的HMAC SHA256值,返回小写十六进制字符串
 * @param inputStr 待加密的原始字符串
 * @param secretKey 加密用的字符串密钥
 * @return 计算结果,和openssl dgst命令输出格式一致
 */
public function computeHmacSha256(inputStr:String, secretKey:String):String {
    // 将输入内容和密钥转为UTF-8编码字节流,和openssl默认编码规则对齐
    var inputBytes:ByteArray = new ByteArray();
    inputBytes.writeUTFBytes(inputStr);
    
    var keyBytes:ByteArray = new ByteArray();
    keyBytes.writeUTFBytes(secretKey);
    
    // 初始化HMAC实例,使用SHA256算法
    var hmacInstance:HMAC = new HMAC(new SHA256(), keyBytes);
    hmacInstance.update(inputBytes);
    
    // 将计算得到的字节流转为小写十六进制字符串
    var resultBytes:ByteArray = hmacInstance.digest();
    return Hex.fromArray(resultBytes).toLowerCase();
}

调用示例

var testInput:String = "symbol=LTCBTC&side=BUY&type=LIMIT&timeInForce=GTC&quantity=1&price=0.1&recvWindow=5000&timestamp=1499827319559";
var testSecret:String = "NhqPtmdSJYdKjVHjA7PZj4Mge3R5YNiP1e3UZjInClVN65XAbvqqM6A7H5fATj0j";
var calcResult:String = computeHmacSha256(testInput, testSecret);
trace(calcResult);
// 输出:c8db56825ae71d6d79447849e617115f4a920fa2acdcab2b053c4b2838bd6b71

注意事项

  • 必须使用writeUTFBytes处理字符串转字节流,不要使用其他编码转换方式,否则会因编码不一致导致计算结果不匹配
  • 最终输出需转为小写十六进制格式,和openssl默认输出规则对齐
  • 依赖的as3crypto相关类可直接引入到项目中,无需额外外部服务依赖,可正常打包到AIR桌面端安装包

内容的提问来源于stack exchange,提问作者Simone Pinto

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.20 01:06:08