Nodejs实现通用的加密和哈希算法(MD5、SHA1、Hmac、AES、Diffie-Hellman、RSA),crypto模块详解

2023-11-04

crypto

crypto模块的目的是为了提供通用的加密和哈希算法(hash)。用纯JavaScript代码实现这些功能不是不可能,但速度会非常慢。Nodejs用C/C++实现这些算法后,通过cypto这个模块暴露为JavaScript接口,这样用起来方便,运行速度也快。

MD5和SHA1

MD5是一种常用的哈希算法,用于给任意数据一个“签名”。这个签名通常用一个十六进制的字符串表示:

const crypto = require('crypto');

const hash = crypto.createHash('md5');

// 可任意多次调用update():
hash.update('Hello, world!');
hash.update('Hello, nodejs!');

console.log(hash.digest('hex')); // 7e1977739c748beac0c0fd14fd26a544

update()方法默认字符串编码为UTF-8,也可以传入Buffer。

如果要计算SHA1,只需要把’md5’改成’sha1’,就可以得到SHA1的结果1f32b9c9932c02227819a4151feed43e131aca40。

还可以使用更安全的sha256和sha512。

Hmac

Hmac算法也是一种哈希算法,它可以利用MD5或SHA1等哈希算法。不同的是,Hmac还需要一个密钥:

const crypto = require('crypto');

const hmac = cryp
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Nodejs实现通用的加密和哈希算法(MD5、SHA1、Hmac、AES、Diffie-Hellman、RSA),crypto模块详解 的相关文章

随机推荐

  • C# NPOI 创建Excel

    C NPOI 创建Excel NPOI是一个供给C 操作导入或导出Excel的开源工具 NET版本 NET 5 NPOI版本 2 6 0 基本使用思路 创建工作薄 Workbook 工作薄 Workbook 中创建工作表 WorkSheet
  • MySQL 深度分页性能急剧下降,该如何优化?

    1 背景 mysql使用select limit offset rows分页在深度分页的情况下 性能急剧下降 例如 select 的情况下直接 limit 600000 10 扫描的是约60万条数据 并且是需要回表60W次 也就是说 部分性
  • 《Effective C++》学习笔记——区分接口继承和实现继承

    派生类public继承自基类 其中函数均是接口继承 实现继承又分为缺省继承与强制继承 对应着虚函数与非虚函数 我们在做项目时 对于任何事物都要抱有先描述再组织的心态 因此 当描述事物为其构建框架尤其是存在继承 is a 关系时 一定要搞清楚
  • centos配置telnet

    安装telnet yum install xinetd y yum install telnet server y yum install telnet y 2 启动xinetd服务和telnet服务 systemctl start xin
  • Vue双向数据绑定指令——v-mode

    前面我讲了V bind指令 该指令只能实现数据的单向绑定 从M自动绑定到V 无法实现数据的双向绑定 不能将数据传回mv控制的m中 也就是不能将数据传回逻辑层 这样前端和逻辑层便不能进行数据交互 为解决此问题 v model指令应运而生 v
  • 用生成数据做好隐私保护|Betterdata

    近年来 数据隐私保护正成为人们高度关注的问题 而匿名性并不能够从根本上解决数据泄露的困扰 此时 合成数据集 的方式正在成为数据保护的有效方法 Betterdata Betterdata 是一款生成合成数据的工具 在不影响准确度和隐私安全的前
  • SAR动目标检测系列:【2】多通道动目标检测

    在SAR的动目标检测应用中 要到达更好的检测性能 必须依赖于多通道检测方案 前文讲了单通道MTI的方法 与单通道系统相比 多通道SAR系统增加了系统自由度 可以通过杂波抑制提高运动目标的图像信杂噪比 改善系统的最小可检测速度和定位能力 同时
  • 将DataFrame某列中的空值填充为0

    客户需求 将空值填充为0 数据存储情况如下 python代码如下 import pandas as pd 获取数据 df pd read excel test xlsx sheet name test print 查看数据 print df
  • 十大程序员最实用的技术社区网站

    今天给大家整理一份国内程序员最实用的开源社区网站清单 希望可以给大家带来一点帮助 第一名 CSDN 中国专业IT社区CSDN Chinese Software Developer Network 创立于1999年 致力于为中国软件开发者提供
  • 【C语言链表实现】学生成绩管理系统(功能全面,通俗易懂)

    学生成绩管理系统 1 问题描述 2 概要设计 2 1 系统主要执行逻辑 2 2 函数调用关系 3 函数实现 3 1 头文件 3 2 核心数据结构设计 3 3 密码登录 3 4 界面菜单 3 5 保存学生信息 3 6 读取学生信息 3 7 录
  • pydantic学习与使用-13.Field 定制字段使用别名alias

    前言 pydantic 里面json是一个内置属性 我想定义一个字段名称是json 这就会引起报错 Field name json shadows a BaseModel attribute use a different field na
  • C++的智能指针如何赋值

    随着C 语言的发展 出现了一个新的功能 那便是 智能指针 而智能指针如何赋值 我来在此探讨一下 目录 1 如何给新创建的智能指针赋值 2 将普通指针赋值给智能指针 3 智能指针赋值给智能指针 shared ptr互相之间赋值 unique
  • go : GoLand安装及环境配置

    前因后果 新学期新气象 开学的第一节课是zw老师的区块链技术与应用领域 congratulations 涉及编程实验 使用Go语言 需要安装GoLand软件进行下一步 Go语言下载地址 golang下载链接 进去之后选择对应的版本下载 这里
  • linux 开启审计功能及规则配置

    推荐阅读 浅谈linux 内核网络 sk buff 之克隆与复制 深入linux内核架构 进程 线程 了解Docker 依赖的linux内核技术 查询审计功能 service auditd status 审计日志文件目录 var log a
  • 如何提高测试用例覆盖率?阿里测试工程师是这样说的

    我们将讨论测试覆盖率的相关问题 以及它如何帮助提高软件质量的 测试覆盖率概述 测试覆盖率被定义为一种测试技术指标 它表明我们的测试用例是否真正完全覆盖了应用程序代码中的各种可能以及在运行这些测试用例时执行了多少代码 如果有10个需求并创建了
  • VS2019搭建linux开发环境

    开发环境 VMware Workstation Lite 15 5 1 链接 https pan baidu com s 1njZ0OOoDZohyJ4CZgMU1AQ 提取码 je0e Ubuntu64 链接 https pan baid
  • JAVA WEB Resource interpreted as Stylesheet but transferred with MIME type text/html

    在本地tomcat上时 用Chrome访问都没问题 CSS能加载且有效果 系统正常 部署到端Tomcat时 Chrome访问时能加载CSS文件 但是没有样式效果 我的项目中加了过滤器 统一了返回的类型为text html 根据请求类型 设置
  • 中级深入--day18

    Selenium Selenium是一个Web的自动化测试工具 最初是为网站自动化测试而开发的 类型像我们玩游戏用的按键精灵 可以按指定的命令自动操作 不同是Selenium 可以直接运行在浏览器上 它支持所有主流的浏览器 包括Phanto
  • 创建脚手架(控制台命令行)

    创建脚手架 控制台命令行 commander文档 说明 命令行项目用来初始化项目的前置条件 简单使用const program require commander program version 0 0 1 v version 输出版本号
  • Nodejs实现通用的加密和哈希算法(MD5、SHA1、Hmac、AES、Diffie-Hellman、RSA),crypto模块详解

    crypto crypto模块的目的是为了提供通用的加密和哈希算法 hash 用纯JavaScript代码实现这些功能不是不可能 但速度会非常慢 Nodejs用C C 实现这些算法后 通过cypto这个模块暴露为JavaScript接口 这