原文链接: nodejs crypto 加密 对称加密 非对称加密
下一篇: VirtualBox 不能为虚拟电脑 [xxx] 打开一个新任务 已解决
nodejs 中的 crypto 模块提供了各种各样加密算法的 API。这篇文章记录了常用加密算法的种类、特点、用途和代码实现。其中涉及算法较多,应用面较广,每类算法都有自己适用的场景。为了使行文流畅,列出了本文记录的几类常用算法:
- 内容摘要:散列 (Hash) 算法
- 内容摘要:HMac 算法
- 内容加解密:对称加密 (AES) 与非对称加密解密 (RSA)
- 内容签名:签名和验证算法
散列 (Hash) 算法
散列函数(英语:Hash function)又称散列算法、哈希函数,是一种从任何一种数据中创建小的数字 “指纹” 的方法。基本原理是将任意长度数据输入,最后输出固定长度的结果。
hash 算法具有以下特点:
- 不能从 hash 值倒推原数据
- 不同的输入,会有不同的输出
- 好的 hash 算法冲突概率更低
正因为 hash 算法的这些特点,因此 hash 算法主要用于:加密、数据检验、版本标识、负载均衡、分布式(一致性 hash)。
下面实现了一个获取文件标识的函数:
const crypto = require("crypto");
const fs = require("fs");
function getFileHash(file, algorithm) {
if (!crypto.getHashes().includes(algorithm)) {
thro