nodejs 用户密码存储加密设计

While there are other lightweight packages or built-in Node.js functions for hashing and salting passwords, bcrypt is widely used and has a proven track record of providing strong security. Therefore, it is a good choice for securing passwords in a database.

Package Name Description
bcrypt Hash and salt passwords using the Blowfish encryption algorithm
argon2 Hash passwords using the Argon2 algorithm, which is resistant to side-channel attacks
scrypt Hash passwords using the scrypt algorithm, which is resistant to GPU and ASIC attacks
pbkdf2 Hash passwords using the PBKDF2 algorithm, which is based on HMAC-SHA1
crypto Built-in Node.js package for encrypting data, including passwords
libsodium Cryptography library that includes password hashing functions
passlib Python library for hashing and verifying passwords
jBCrypt Java implementation of the Blowfish password hashing algorithm
hashids Generate short, unique, and reversible ids from integers
shortid Generate short and unique ids for use in URLs and other contexts

Here are five popular ways to hash and salt passwords in Node.js:

Bcrypt: Bcrypt is a widely used password hashing function that is known for its security and resistance to brute-force attacks. It is a popular choice for password hashing in many Node.js applications.

Argon2: Argon2 is a newer password hashing function that is designed to be more secure than bcrypt. It uses a variable amount of memory and time to hash passwords, which makes it resistant to brute-force attacks and other types of attacks.

PBKDF2: PBKDF2 is a key derivation function that is often used for password hashing. It is a slow, computationally intensive algorithm that can be configured to use multiple iterations and a salt to make it more secure.

SHA-256: SHA-256 is a hash function that is commonly used for password hashing. While it is not as secure as some other hashing functions, it is still a popular choice for password hashing in many applications.

Scrypt: Scrypt is a password-based key derivation function that is designed to be memory-hard and resistant to brute-force attacks. It is similar to Argon2 in many ways, but is not as widely used.

Here are five popular lightweight packages for hashing and salting passwords in Node.js that don't require any compilation:

bcryptjs: A pure JavaScript implementation of the bcrypt password hashing function that works on both Node.js and web browsers. It is a drop-in replacement for bcrypt.

crypto-js: A JavaScript library that provides a collection of cryptographic algorithms including password-based key derivation functions like PBKDF2 and SHA256. It can be used in both Node.js and web browsers.

scrypt: A pure JavaScript implementation of the scrypt password-based key derivation function. It is optimized for the V8 JavaScript engine and works in both Node.js and web browsers.

argon2: A pure JavaScript implementation of the Argon2 password hashing function. It is optimized for the V8 JavaScript engine and works in both Node.js and web browsers.

node-forge: A pure JavaScript implementation of cryptographic algorithms including password-based key derivation functions like PBKDF2 and bcrypt. It can be used in both Node.js and web browsers.

The reason for using bcrypt to generate a salted hash of a password and to compare it with the stored hash is that it provides a more secure way of storing and managing passwords than simply storing them in plaintext.

Bcrypt is a popular password hashing function that uses a combination of a key derivation function (KDF) and a salt to hash a password. By using a KDF, bcrypt can slow down an attacker attempting to crack the password by requiring them to perform a large number of iterations of the KDF. This is known as key strengthening or key stretching.

Additionally, using a salt helps to protect against pre-computed hash attacks, where an attacker could use a pre-computed table of hashes to quickly crack passwords. By using a unique salt for each password, the attacker would need to generate a new table of hashes for each salt, making the attack much more difficult and time-consuming.

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容