Nodejs中中crypto模块的安全知识讲解模块的安全知识讲解
本篇文章给大家详细介绍了Nodejs中crypto模块的安全知识的相关内容,需要的朋友跟着小编一下学习参考下
吧。
互联网时代,网络上的数据量每天都在以惊人的速度增长。同时,各类网络安全问题层出不穷。在信息安全重要性日益凸显的
今天,作为一名开发者,需要加强对安全的认识,并通过技术手段增强服务的安全性。
crypto模块是nodejs的核心模块之一,它提供了安全相关的功能,如摘要运算、加密、电子签名等。很多初学者对着长长的
API列表,不知如何上手,因此它背后涉及了大量安全领域的知识。
本文重点讲解API背后的理论知识,主要包括如下内容:
摘要(hash)、基于摘要的消息验证码(HMAC)
对称加密、非对称加密、电子签名
分组加密模式
摘要(摘要(hash))
摘要(digest):将长度不固定的消息作为输入,通过运行hash函数,生成固定长度的输出,这段输出就叫做摘要。通常用来
验证消息完整、未被篡改。
摘要运算是不可逆的。也就是说,输入固定的情况下,产生固定的输出。但知道输出的情况下,无法反推出输入。
伪代码如下。
digest = Hash(message)
常见的摘要算法 与 对应的输出位数如下:
MD5:128位
SHA-1:160位
SHA256 :256位
SHA512:512位
nodejs中的例子:
var crypto = require('crypto');
var md5 = crypto.createHash('md5');
var message = 'hello';
var digest = md5.update(message, 'utf8').digest('hex');
console.log(digest);
// 输出如下:注意这里是16进制
// 5d41402abc4b2a76b9719d911017c592
备注:在各类文章或文献中,摘要、hash、散列 这几个词经常会混用,导致不少初学者看了一脸懵逼,其实大部分时候指的
都是一回事,记住上面对摘要的定义就好了。
MAC、、HMAC
MAC(Message Authentication Code):消息认证码,用以保证数据的完整性。运算结果取决于消息本身、秘钥。
MAC可以有多种不同的实现方式,比如HMAC。
HMAC(Hash-based Message Authentication Code):可以粗略地理解为带秘钥的hash函数。
nodejs例子如下:
const crypto = require('crypto');
// 参数一:摘要函数
// 参数二:秘钥
let hmac = crypto.createHmac('md5', '123456');
let ret = hmac.update('hello').digest('hex');
console.log(ret);
// 9c699d7af73a49247a239cb0dd2f8139
对称加密、非对称加密对称加密、非对称加密