Spring Boot 遇上 HMAC-SHA256,API 安全大升级!1. 开篇引入在当今数字化浪潮汹涌澎湃的时代,网络安全已然成为企业和开发者无法回避的核心议题。
今天介绍的是HMAC-SHA256加密算法。
mapToSign.put("mch_id", MCH_ID); mapToSign.put("media_hash", md5Hex); mapToSign.put("sign_type", "HMAC-SHA256 "); //计算签名 String sign = SignUtils.createSign(mapToSign, "HMAC-SHA256", MCH_KEY, null); MCH_ID) .addFormDataPart("media_hash", md5Hex) .addFormDataPart("sign_type", "HMAC-SHA256 .build(); //后面的省略了... } 常见错误 遗漏MultipartBody.FORM:需要设置 setType(MultipartBody.FORM) 签名错误:需要指定签名算法HMAC-SHA256
developers.weixin.qq.com/doc/offiaccount/OA_Web_Apps/JS-SDK.html#1 其中重点文字:所有需要使用JS-SDK的页面必须先注入配置信息,否则将无法调用 PHP HMAC-SHA256 微信支付分 唤起部分的签名类型,仅支持HMAC-SHA256 以下为签名过程代码 function sign_hmac_sha256($data, $key) { ksort($data); 1000,9999), 'timestamp' => time(), 'nonce_str' => md5(time()), 'sign_type' => 'HMAC-SHA256
2.命令格式 rip authentication-mode hmac-sha256{plain / plain-text / 【cipher】password-key}key-id undo rip 认证模式为hmac-sha256时,长度为1~255 cipher 表示可以键入文明或密文认证密码,但在查看配置文件时均已密文方式显示 password-key 指定密文方式显示的认证密码 字符串形式, 认证模式为 hmac-sha256时,长度为1~255的文明或20 ~392的密文 key-id指定MD5密文认证标识符 整数形式 ,取值范围1~255 hmac-sha256指定HMAC-SHA256 密文验证方式 4.使用报文认证 在接口G0/0/0 上配置HMAC-SHA256认证,认证密码为galaxy,认证标识符为255。
HMAC-SHA256:使用SHA-256哈希函数生成HMAC。 HMAC-SHA512:使用SHA-512哈希函数生成HMAC。 ; // 密钥 String key = "secretKey"; try { // 计算HMAC-SHA256值 值 System.out.println("HMAC-SHA256: " + hmacSHA256); } catch (NoSuchAlgorithmException | InvalidKeyException e) { e.printStackTrace(); } } /** * 计算HMAC-SHA256 然后,使用calculateHmacSHA256方法计算消息的HMAC-SHA256值。最后,将计算得到的字节数组转换成十六进制字符串,并打印输出。
提供幂等性控制机制 1.2 接口版本更新 相比于V1版本,V2版本主要增加了以下特性: 新增错误码subCode:isv.business-failed:10029,用于处理并发请求场景 优化了签名算法,推荐使用hmac-sha256 8 v String 是 2 API协议版本 sign String 是 796559d40beb08a1a1113c456c5c5a62 输入参数签名结果 sign_method String 否 hmac-sha256 签名算法类型(推荐使用hmac-sha256,不传则默认为"md5",未来会下线) 2.3 业务参数 在param_json中需要传递的业务参数如下: 参数名称 类型 必填 示例值 描述 cert_no 123123” 三方订单Id check_verify_order_id Bool 否 false 是否检查订单Id和卡券号码的关联关系 2.4 签名生成算法 签名是API调用安全性的重要保障,以下是使用hmac-sha256 # 构建待签名字符串 query_string = '&'.join([f"{k}={v}" for k, v in sorted_params]) # 使用hmac-sha256
核心接口调用示例 以商品详情获取为例,完整调用流程如下: (1)签名生成(HMAC-SHA256 实现) import hmacimport hashlibimport timeimport urllib.parsedef HMAC-SHA256加密 signature = hmac.new( app_secret.encode('utf-8'), sign_str.encode('utf 为方便大家快速对接,附上京东商品 API 调试清单: ✅ 联盟商品 ID 格式转换完成 ✅ 签名算法升级至 HMAC-SHA256 ✅ 实现基于场景 ID 的参数适配 ✅ 建立动态限流机制 ✅ 完成企业资质认证以获取高级权限
hashString = CryptoJS.enc.Base64.stringify(hash); auth = `hmac username="${hmacUsername}", algorithm="hmac-sha256 StdEncoding.EncodeToString(sig) // 生成鉴权头 authorization = fmt.Sprintf(`hmac username="%s", algorithm="hmac-sha256 生成鉴权头 String authorization = String.format( "hmac username=\"%s\", algorithm=\"hmac-sha256
文中介绍了一种派生密码的手段: 使用 Argon2 算法将用户密码延展成一个 32 字节的密钥 stretch_key 通过 stretch_key 为密钥,"auth key" 为内容,用 HMAC-SHA256 派生出一个临时的加密密钥 auth_key 通过 stretch_key 为密钥,"master key" 为内容,用 HMAC-SHA256派生出主密钥的一部分 partial_key 使用加密算法级别的随机数生成器生成 32 字节的 seed 以 partial_key 为密钥,seed 为内容用 HMAC-SHA256 派生出主密钥 master_key 有了 master_key 后,对于任意的应用程序,可以用类似的方式派生出应用程序所需要的密钥
agentType: 智能体类型(如:skill-a, skill-b)agentEndpoint: 智能体服务端点 URLtimestamp: 消息发送时间戳(毫秒)signature: 使用预共享密钥生成的 HMAC-SHA256 agentType: 智能体类型sceneId: 场景 IDstatus: 加入状态(SUCCESS/FAILED)timestamp: 消息发送时间戳(毫秒)signature: 使用预共享密钥生成的 HMAC-SHA256 签名6.3.3 安全认证流程预共享密钥分发:MCP Agent 内部组件在部署时配置共享安全密钥消息签名:发送方使用密钥和消息内容生成 HMAC-SHA256 签名签名验证:接收方使用相同密钥验证消息完整性和真实性时间戳检查 确认加入结果6.3.5 协议实现安全要求仅限内部使用:UDP 广播仅在 MCP Agent 内部使用,禁止跨 MCP 网络本地网络限制:仅在本地子网广播,不跨网段强制签名:所有 UDP 消息必须包含 HMAC-SHA256
10.221.111.222 baidu.com.cn# 使用tsig_key进行zone transfer,获取zone下面所有域名信息dig @10.221.111.222 axfr baidu.com.cn -y hmac-sha256
HMACSHA256(string identifier, long currTime, int expire, string base64UserBuf, bool userBufEnabled) 方法 HMAC-SHA256 即时通信 IM 服务自2019.07.19开始启用新的签名算法,从之前的 ECDSA-SHA256 升级为 HMAC-SHA256。 2019.07.19以后创建的 SDKAppID 均会采用新的 HMAC-SHA256 算法。
京东 API 调用:item_detail(商品详情)2.1 接口核心信息接口用途:获取京东商品基础信息、价格、库存等数据;请求方式:HTTPS POST;核心差异:京东签名算法为HMAC-SHA256 2.2 签名生成(京东 HMAC-SHA256 算法)python运行import hmacimport hashlibdef generate_jd_sign(params, app_secret): """生成京东API签名(HMAC-SHA256算法)""" # 1. 用AppSecret作为密钥,HMAC-SHA256加密后转大写 sign = hmac.new( app_secret.encode("utf-8"), sign_str.encode
image (2).png 案例2 客户:“PHP调用创建会议api,按照要求,拼接相应字符串,Hmac-SHA256加密,转16进制,再转base64后提交,还是显示{"error_info":{"error_code ,能帮忙查下什么原因吗“ 通过对客户的代码进行分析和测试,我们发现是客户签名方法错误,客户的代码如图所示 image (3).png 生成了签名的字符串后依次进行了Hmac-SHA256加密,转16
API协议版本,可选值:2.0 sign_methodString 是 签名的摘要算法,可选值为:hmac,md5,hmac-sha256 TOP目前支持的签名算法有三种:MD5(sign_method=md5),HMAC_MD5(sign_method=hmac),HMAC_SHA256(sign_method=hmac-sha256), v:可以固定为 2.0sign_method:可以固定:hmac,md5,hmac-sha256 其中一个此时需要处理的公共参数有:method,timestamp ,sign 。
是一个使用 JavaScript 实现的加密算法库它支持的算法包含: Base64 MD5 SHA-1 和 SHA-256 AES Rabbit MARC4 HMAC、HMAC-MD5、HMAC-SHA1、HMAC-SHA256
解决办法:配置authentication-mode hmac-sha256 password password命令,确保两端配置的验证密码一致。 解决办法:进入DFS Group视图,配置authentication-mode hmac-sha256 password password命令。
+= "date: " + date + "\n" signature_origin += "GET " + "/v2/tts " + "HTTP/1.1" # 进行hmac-sha256 "api_key=\"%s\", algorithm=\"%s\", headers=\"%s\", signature=\"%s\"" % ( self.APIKey, "hmac-sha256 += "date: " + date + "\n" signature_origin += "GET " + "/v2/iat " + "HTTP/1.1" # 进行hmac-sha256 "api_key=\"%s\", algorithm=\"%s\", headers=\"%s\", signature=\"%s\"" % ( self.APIKey, "hmac-sha256
pbkdf2", cipher: "aes-128-ctr", kdfparams: { c: 262144, dklen: 32, prf: "hmac-sha256 this.constants.pbkdf2.c, options.kdfparams.dklen || this.constants.pbkdf2.dklen, prf //hmac-sha256