SHA-256(Secure Hash Algorithm 256-bit)是一种密码学安全散列函数,它接受任意长度的输入数据,并生成一个256位(32字节)的哈希值作为输出;是SHA-2系列中的一种算法;是SHA-224和SHA-512之间的中间版本。被应用于数据完整性校验、数字签名、密码学协议等领域,例如在数字证书、SSL/TLS握手过程、密码存储和验证等方面。它提供了更强大的数据完整性保护和安全性,是目前常用的哈希算法之一。
它具有以下特点:
- 不可逆性:无法从哈希值反推出原始输入数据。
- 相同输入生成相同哈希值:对于相同的输入数据,无论执行多少次,都会生成相同的哈希值。
- 哈希冲突可能性极低:不同的输入数据生成相同哈希值的可能性极低,可以被认为是可以忽略不计的。
加盐
加盐是指在密码哈希过程中引入一个随机生成的字符串,称为盐(salt),并将其与密码进行组合后再进行哈希计算。这个盐值会与每个用户的密码单独关联,并且将其存储在数据库中。 加盐可以增加密码哈希的复杂度,提高密码的安全性,即使两个用户使用相同的密码,由于使用了不同的盐值,其哈希结果也会有所区别。这样即使黑客获得了哈希值,也很难通过暴力破解找到原始的密码。
具体用法
源码链接
安装
npm install js-sha256
引用
import { sha256 } from 'js-sha256';
使用
const generateSalt = () => {
const randomBytes = new Uint8Array(16); //
crypto.getRandomValues(randomBytes);
return Array.from(randomBytes, (byte) =>
byte.toString(16).padStart(2, '0')
).join('');
};
const salt = generateSalt();
console.log('输出=>', salt);// 随机盐值
const password = 'password'; // 密码
const saltPassword = salt + password;
const specificPassword = sha256(saltPassword);
console.log('输出=>', specificPassword); //加密后
网友评论