nodejs crypto 加密

版权声明:本文原创为夏狮狮,转载请说明出处! https://blog.csdn.net/weixin_42470791/article/details/82226626

crypto 加密

crypto模块是nodejs的核心模块之一,它提供了安全相关的功能,如摘要运算、加密、电子签名等。

摘要(hash)

摘要(digest):将长度不固定的消息作为输入,通过运行hash函数,生成固定长度的输出,这段输出就叫做摘要。通常用来验证消息完整、未被篡改。

PS摘要运算是不可逆的。也就是说,输入固定的情况下,产生固定的输出。但知道输出的情况下,无法反推出输入。

常见的摘要算法 与 对应的输出位数如下:

PS 如MD5:不管是输入多少位数 如使用md5输出的都是128位

  • MD5:128位

  • SHA-1:160位

  • SHA256 :256位

  • SHA512:512位

    案例

    js中写入以下代码

var crypto = require('crypto');
var md5 = crypto.createHash('md5');

var message = 'hello';
var digest = md5.update(message, 'utf8').digest('hex'); 
//'hex':将128为数转为十六进制
//PS:这边进制一定要转 不然会报错

console.log(digest);
// 输出如下:注意这里是16进制
// 5d41402abc4b2a76b9719d911017c592

在node环境下运行这段js代码
nodejs基础

这里写图片描述

在各类文章或文献中,摘要、hash、散列 这几个词经常会混用,导致不少初学者看了一脸懵逼,其实大部分时候指的都是一回事,记住上面对摘要的定义就好了。

crypto.createHash(algorithm)

创建并返回一个hash对象,它是一个指定算法的加密hash,用于生成hash摘要。

参数algorithm可选择系统上安装的OpenSSL版本所支持的算法。例如:'sha1', 'md5', 'sha256', 'sha512'等。
hash.update(data)

更新hash的内容为指定的data。当使用流数据时可能会多次调用该方法。

转出进制格式

hash.digest(encoding='binary')

计算所有传入数据的hash摘要。参数encoding(编码方式)可以为'hex', 'binary' 或者'base64''hex':十六进制
'binary':二进制
'base64':“Base64是网络上最常见的用于传输8Bit字节码的编码方式之一,Base64就是一种基于64个可打印字符来表示二进制数据的方法”。

猜你喜欢

转载自blog.csdn.net/weixin_42470791/article/details/82226626