前端密码加密 SHA-256 + 盐值

SHA-256(Secure Hash Algorithm 256-bit)是一种密码学安全散列函数,它接受任意长度的输入数据,并生成一个256位(32字节)的哈希值作为输出;是SHA-2系列中的一种算法;是SHA-224和SHA-512之间的中间版本。被应用于数据完整性校验、数字签名、密码学协议等领域,例如在数字证书、SSL/TLS握手过程、密码存储和验证等方面。它提供了更强大的数据完整性保护和安全性,是目前常用的哈希算法之一。
它具有以下特点:

  1. 不可逆性:无法从哈希值反推出原始输入数据。
  2. 相同输入生成相同哈希值:对于相同的输入数据,无论执行多少次,都会生成相同的哈希值。
  3. 哈希冲突可能性极低:不同的输入数据生成相同哈希值的可能性极低,可以被认为是可以忽略不计的。

加盐

加盐是指在密码哈希过程中引入一个随机生成的字符串,称为盐(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); //加密后

Uint8Array
crypto.getRandomValues()

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

友情链接更多精彩内容