前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Hmac加密方式解析

Hmac加密方式解析

原创
作者头像
挥刀北上
修改2021-11-29 12:01:28
2.1K0
修改2021-11-29 12:01:28
举报
文章被收录于专栏:Node.js开发

HMAC算法是将散列算法与一个密钥结合在一起,以阻止对签名完整性破坏,其实就是类似于上面的提到的md5密码中加盐道理是类似的。 使用HMAC算法前,我们使用createHmac方法创建一个hmac对象,创建方法如下所示:

crypto.createHmac(params, key);

该方法中使用两个参数,第一个参数含义是在Node.js中使用的算法,比如'sha1', 'md5', 'sha256', 'sha512'等等,该方法返回的是hmac对象。 key参数值为一个字符串,用于指定一个PEM格式的密钥。

在创建完成hmac对象后,我们也是一样使用一个update方法来创建一个摘要,该方法使用如下所示:

hmac.update(data);

在update方法中,使用一个参数,其参数值为一个Buffer对象或一个字符串,用于指定摘要内容。也是一样可以在被输出之前使用多次update方法来添加摘要内容。

最后一步就是 使用hmac对象的digest方法来输出摘要内容了;在使用hmac对象的digest方法后,不能再向hmac对象中追加摘要内容,也就是说你使用了digest方法作为输出后,因此是不能向hmac对象中追加内容。使用方法如下:

hmac.digest([encoding]);

该方法有一个参数,该参数是一个可选值,表示的意思是 用于指定输出摘要的编码格式,可指定参数值为 'hex', 'binary', 及 'base64'. 如果使用了该参数,那么digest方法返回字符串格式的摘要内容,如果不使用该参数,那么digest方法返回一个是Buffer对象。

如下使用一个简单的demo:

代码语言:javascript
复制
const crypto = require('crypto');

// 创建一个hmac对象
const hmac = crypto.createHmac('md5', 'abc');

// 往hmac对象中添加摘要内容
const up = hmac.update('123456');

// 使用 digest 方法输出摘要内容

const result = up.digest('hex'); 

console.log(result); // 8c7498982f41b93eb0ce8216b48ba21d

以上便是hmac加密方式的解析,希望对你有所帮助。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档