gpt4 book ai didi

node.js - Node Hmac 认证

转载 作者:搜寻专家 更新时间:2023-11-01 00:21:41 24 4
gpt4 key购买 nike

我对身份验证过程的理解。主机创建一个 secret 和一个 public api key。客户端在 secret 的帮助下加密有效负载,这就是签名。然后将其公钥、负载、签名发送给主机。

Example client

主机检查是否允许公钥进行操作,并根据客户端公钥获取 secret 。在 secret 的帮助下,主机解密签名并将其与有效负载进行比较。

问题

  • 以上过程描述是否正确?
  • 如何解密签名并将其与有效负载进行比较?
  • 或者我应该用与客户端相同的方式加密它然后比较它吗?
  • updatedigest 这两个步骤究竟是做什么的 Node Docs

客户:

  authenticate: (self)->
payload = 'AUTH' + moment()
signature = crypto.createHmac('sha384', WEBSOCKET_SECRET)
.update(payload)
.digest('hex')

data = {
event: 'auth',
apiKey: WEBSOCKET_KEY,
authSig: signature,
authPayload: payload
}
self.send self, data

服务器:

hmac = crypto.createHmac('sha384', WEBSOCKET_SECRET)
hmac.on 'readable', () ->
data = hmac.read()
if (data)
console.log data, data.toString('utf-8')


# hmac.write(authPayload)
hmac.write(signature)
hmac.end()

当前的服务器端解决方案

  authenticate: (authPublicKey, authSignature, authPayload)->
signature = crypto.createHmac('sha384', WEBSOCKET_SECRET)
.update(authPayload)
.digest('hex')

return authSignature == signature

最佳答案

HMAC 不用于加密/解密,仅用于身份验证和数据完整性检查。

客户端发送他的有效载荷、他的 pk 和他的有效载荷的 hmac 以及他的 key 。服务器用他的 pk 检索用户,用检索到的 sk 重新计算 hmac,然后检查计算的 hmac 是否等于检索到的 hmac。

客户端有公钥和私钥:

var str        = payload_string;
var public_key = pk;
var secret_key = sk;

var hmac = crypto.createHmac('sha384', sk).update(str).digest('hex');

request.post({uri:..., json: { hmac, public_key, payload: str }, function(err, response, body) {
console.log(body);
});

在服务器上:

exports.... = function(req, res)
{
var hmac = req.body.hmac;
var pk = req.body.public_key;
var payload = req.body.payload;


// retrieve authorized user
User.findOne({ pk }, function(err, user) {
if(err || !user){
return res.status(403).json({error:"Invalid user"});
}

// recompute hmac
var compute_hmac= crypto.createHmac('sha384', user.sk).update(payload).digest('hex');

// check hmac
if(compute_hmac != hmac) {
return res.status(403).json({error:"Security check failed"});
}
// do stg
return res.status(200).json({success:"ok"});
});
}

关于node.js - Node Hmac 认证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39892167/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com