赞
踩
正常数据用户名密码大多数是md5加密的 使用场景:数据库密码字段设计,支付中做数据的摘要
//用常量去接收 require 的返回值
const crypto = require('crypto'); //引入模块
//创建md5算法
crypto.createHash('md5');
//数据的单向加密
let str1 = 'thisisnode';
//具体的加密
hash.update(str1); //update可执行多次
let encodeStr=hash.digest('hex');
console.log(hsh.digest('hex')); //十六进制的字符串表示
把一个字符串整体加密(一次update),和分段加密(分段可以任意分割,多次update) 结果是一致的.
//比方一个字符串 123456789,可分割为 123+456+789
let totalStr = '123456789';
let str1 = '12';
let str2 = '3456';
let str3 = '789';
hash.update(totalStr);//update 就是md5单项加密的主逻辑 123456789 整个字符串密码结果为:25f9e794323b453885f5181f1b624d0b
console.log(hash.digest('hex'));
hash.update(str1);
hash.update(str2);
hash.update(str3);
console.log(hash.digest('hex')); //加密结果:123456789的分段加密结果为:25f9e794323b453885f5181f1b624d0b
哈希算法2.sha1,与md5大体类似,如制定16进制显示的话,返回40位长度的字符串
//创建个sha1算法
let hash=crypto.createHash('sha1');
hash.update('sha1thisisisisfdfdsfdsfdsfdsfdsfdsfds32432432432fdsfr231432ds');
console.log(hash.digest('hex').length);
一.对称加密:就是加密与解密的 秘钥一致,简单的说就是 加密时用到的 密码,与解密时用到的 密码一致
非对称加密:就是加密与解密的 秘钥不一致,简单的说就是 加密时用到的 密码,与解密时用到的 密码不一致
对称加解密要稍微封装:
加密函数
: data 指被加密的数据,
key 就是密码`
function aesEncrypt(data,key){ /** * 1.通过 crypto ,与key 创建一个ciper暗号 * createCipheriv(algorithm,key) * algorithm 加密类型 * key 密码 */ let ciper=crypto.createCipher('aes192',key); //把数据加密 //update 有多种方法 //推荐 update(data, inputEncoding, outputEncoding) /** * data 要加密的数据 * inputEncoding 输入的编码,其实就是data的编码 * outputEncoding 输出的编码,正常我们都使用hex 16进制的输出 */ let returnStr=ciper.update(data,'utf8','hex'); //加入结尾符 let final=ciper.final('hex'); returnStr=returnStr+final; return returnStr; } console.log(aesEncrypt('hellword','node'));
aes 解密:
function aesDecrypt(encrypted,key){
/**创建一个解密 */
const deciper=crypto.createDecipher('aes192',key);
/**
* update(data: string, inputEncoding: Encoding | undefined, outputEncoding: Encoding): string;
* data 就是被加密的字符串,inputEncoding 这个加密的字符的字符串一般椒16进制字符串,outputEncoding 输出的字符串类型一般utf8
*/
let descrped = deciper.update(encrypted,'hex','utf8');
descrped+=deciper.final('utf8')
return descrped;
}
let encrypted='ffd218a2ad04c95688534f4bd30a1c5d';
let key='node'
console.log(aesDecrypt(encrypted,key));
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。