Loading [MathJax]/jax/output/CommonHTML/config.js
社区首页 >问答首页 >检查HMAC签名

检查HMAC签名
EN

Stack Overflow用户
提问于 2020-08-21 08:22:16
回答 3查看 119关注 0票数 1

如何在express.js应用程序中从POST正文创建正确的签名?

我不知道我应该发送什么而不是官方文档中的有效载荷。我试图以不同的方式通过req.body,但没有成功。在适当的控制器之前,有一堆中间件(特别是body-parser-xml)。

代码语言:javascript
代码运行次数:0
复制
function ComputeHash (secret, payload)

{

  var crypto = require('crypto');

  var hmac = crypto.createHmac('sha256', secret);

  hmac.write(payload);

  hmac.end();

  return hmac.read().toString('base64');
}
EN

回答 3

Stack Overflow用户

发布于 2020-08-21 10:17:21

您只需要主体(有效负载),不需要其他任何东西。我不会尝试解析xml。不是js的人,我想下面的链接描述了在nodejs How to process POST data in Node.js?中获取主体的方法。

票数 0
EN

Stack Overflow用户

发布于 2020-08-21 14:23:28

你想要原始的帖子主体。Express通常提供流,因此一种技术是将正文流的各个部分逐段添加到散列中。

看起来像是有一个body-parser#raw,您可以将其设置为Express中间件,它将为您提供作为单个内容块的主体。

请注意,它的一个选项是最大正文长度。如果您在Connect通知中包含信封的文档,则大小很容易达到20MB或更大。

...and这就是为什么它是而不是建议您在webhook (连接)通知中包含信封的文档。相反,使用通知作为触发器,然后下载文档。

另外,我强烈建议您使用PaaS队列系统来对通知消息进行排队。请参阅blog post和代码示例。

票数 0
EN

Stack Overflow用户

发布于 2020-09-04 09:38:58

我找到了一个解决方案。

代码语言:javascript
代码运行次数:0
复制
const rawBodySaver = function (req, res, buf, encoding) {
  if (buf && buf.length) {
    req.rawBody = buf.toString(encoding || 'utf8');
  }
}

router.post('/webhook', bodyParser.xml({
  limit: '2MB',    
  extended: true, 
  verify: rawBodySaver, 
  type: '*/*', 
  xmlParseOptions: {
    normalize: false,     // Trim whitespace inside text nodes
    normalizeTags: true, // Transform tags to lowercase
    explicitArray: false // Only put nodes in array if >1
  },
 }), async function(req, res, next) {
  try {
    return DocsController.webhook(req, res);
  } catch (e) {
    console.log(e);
    return res.status(500).send('Internal error');
  }
});

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63519189

复制
相关文章
hmac:Python密码消息签名
HMAC算法可以用于验证信息的完整性,这些信息可能在应用之间传递,或者存储在一个可能有安全威胁的地方。 其基本思路:生成实际数据的一个密码散列,并提供一个共享的秘密密钥。然后使用得到的散列检查所传输或存储的信息,以确定一个信任级别,而不传输秘密密钥。
luckpunk
2023/09/19
3130
hmac:Python密码消息签名
在 Kubernetes 中检查镜像签名
之前连续写了几篇 Shell Operator 的东西,后来又写了一篇 cosign 的介绍,细心的读者可能会猜到,最终我的目的就是会用 Shell Operator 结合 cosign 来检查镜像的签名,以此保障镜像的完整性——是的,这个过程相当容易。
崔秀龙
2021/04/25
1.2K0
在 Kubernetes 中检查镜像签名
之前连续写了几篇 Shell Operator 的东西,后来又写了一篇 cosign 的介绍,细心的读者可能会猜到,最终我的目的就是会用 Shell Operator 结合 cosign 来检查镜像的签名,以此保障镜像的完整性——是的,这个过程相当容易。
CNCF
2021/05/07
9240
Swift 实现腾讯云 TC3-HMAC-SHA256 签名方法
最近在接入一些腾讯云的API,腾讯是不是歧视我 iOS 没有 OC 示例,也没有 Swift 示例,可能是面向服务器的吧,但是边上安卓的童鞋直接复制JAVA代码就跑起来~~~我难受。
韦弦zhy
2020/03/20
3.1K0
Swift 实现腾讯云 TC3-HMAC-SHA256 签名方法
HMAC算法及其应用
在现代的网络中,身份认证是一个经常会用到的功能,在身份认证过程中,有很多种方式可以保证用户信息的安全,而MAC(message authentication code)就是一种常用的方法。
程序那些事
2020/07/07
1.7K0
Python 和 PHP 对腾讯云签名 hmac_sha256 算法实现
开宗明义,米扑科技在使用腾讯云的API接口签名中,按照官方示例开发PHP、Python的接口,经常会提示签名错误
阳光岛主
2019/02/18
2.5K0
Hmac加密方式解析
HMAC算法是将散列算法与一个密钥结合在一起,以阻止对签名完整性破坏,其实就是类似于上面的提到的md5密码中加盐道理是类似的。 使用HMAC算法前,我们使用createHmac方法创建一个hmac对象,创建方法如下所示:
挥刀北上
2021/11/29
2.2K0
Hmac加密方式解析
HMAC算法及其应用
在现代的网络中,身份认证是一个经常会用到的功能,在身份认证过程中,有很多种方式可以保证用户信息的安全,而MAC(message authentication code)就是一种常用的方法。
子润先生
2021/06/21
2.1K0
hashlib模块,hmac模块
hash是一种算法(Python3.版本里使用hashlib模块代替了md5模块和sha模块,主要提供 SHA1、SHA224、SHA256、SHA384、SHA512、MD5 算法),该算法接受传入的内容,经过运算得到一串hash值。
小小咸鱼YwY
2019/07/24
7550
Python hashlib、hmac模
Python中的用于加密的函数位于hashlib,hmac模块中,都是内置模块,直接导入即可使用
py3study
2020/01/08
9440
.NET Core 使用HMAC算法
通过哈希算法,我们可以验证一段数据是否有效,方法就是对比该数据的哈希值,例如,判断用户口令是否正确,我们用保存在数据库中的password_md5对比计算md5(password)的结果,如果一致,用户输入的口令就是正确的。
晓晨
2019/11/13
9620
win10 UWP Hmac
在uwp,Hmac在很多网络使用,我最近写qiniu SDK,把原来C#改为UWP,需要使用HMAC。
林德熙
2018/09/18
6220
win10 UWP Hmac
在uwp,Hmac在很多网络使用,我最近写qiniu SDK,把原来C#改为UWP,需要使用HMAC。
林德熙
2022/08/09
3890
Auto.js中实现HMAC-SHA256加密算法,支持腾讯云v3签名
最近在Auto.js中做腾讯云的文字识别OCR,其中有个难点是腾讯云的v3签名(有时也称作 TC3-HMAC-SHA256),其中需要用到几个加密算法,在其他服务端语言中都有现成的函数可以使用,但是在JavaScript和Auto.js中都找不到对应的函数,幸好Auto.js支持Java,参考Java代码稍微转换一下就可以用了。
主机优惠教程
2022/04/09
1.6K0
解决Linux netcore https请求使用自签名证书忽略安全检查方法
当前系统环境:CentOS 7 x64. dotnet 2.0. 不管是 ServicePointManager.ServerCertificateValidationCallback = (a, b, c, d) => true; 还是: HttpClient httpClient = new HttpClient(new HttpClientHandler() { ServerCertificateCustomValidationCallback = (a, b, c, d) => true });
星哥玩云
2022/07/13
9690
解决linux netcore https请求使用自签名证书忽略安全检查方法
当前系统环境:centos7 x64. dotnet 2.0. 不管是 ServicePointManager.ServerCertificateValidationCallback = (a, b, c, d) => true; 还是: HttpClient httpClient = new HttpClient(new HttpClientHandler() { ServerCertificateCustomValidationCallback = (a, b, c, d) => true });
旺财的城堡
2018/11/20
2K0
python实现HMAC算法与应用
In this program, you are required to invoke the scrypt algorithms that are implemented in hashlib build-in library. Your program does the following:
timerring
2022/07/20
4070
python实现HMAC算法与应用
python实现HMAC算法与应用[通俗易懂]
In this program, you are required to invoke the scrypt algorithms that are implemented in hashlib build-in library. Your program does the following:
全栈程序员站长
2022/11/16
4660
python实现HMAC算法与应用[通俗易懂]
JWT介绍及其安全性分析
JWT(JSON Web令牌)是REST API中经常使用的一种机制,可以在流行的标准(例如OpenID Connect)中找到它,但是有时也会使用OAuth2遇到它。有许多支持JWT的库,该标准本身具有“对加密机制的丰富支持”,但是这一切是否意味着JWT本质上是安全的?
FB客服
2019/11/15
3.9K0
Swift的HMAC和SHA1加密
在上个 Objectice-C 项目中,使用的 HMAC 和 SHA1 进行加密。如下代码:
零式的天空
2022/03/25
1.1K0

相似问题

生成HMAC签名

122

SimpleDB HMAC签名

23

解码HMAC签名

10

Kotlin的HMAC签名

14

签名HMAC的验证

10
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档