이 기사에서는 Express에서 비밀번호 암호화를 위해 bcryptjs를 사용하는 방법을 주로 소개하고 참고용으로 제공합니다.
저는 며칠 전에 Express를 사용하여 작은 프로젝트를 개발했습니다. 로그인 및 등록 모듈을 개발할 때 비밀번호 암호화에 bcryptjs가 사용되었습니다. 내용을 요약하면:
bcrypt는 크로스 플랫폼 파일 암호화 도구입니다. 이를 통해 암호화된 파일은 지원되는 모든 운영 체제 및 프로세서에서 전송할 수 있습니다. 비밀번호는 8~56자 사이여야 하며 내부적으로 448비트 키로 변환됩니다.
데이터를 암호화하는 것 외에도 bcrypt는 기본적으로 원래 입력 파일을 삭제하기 전에 임의의 데이터로 세 번 덮어쓰므로 컴퓨터 데이터에 접근할 수 있는 누군가의 복구 시도를 방지합니다. 이 기능을 사용하고 싶지 않으면 비활성화할 수 있습니다.
bcrypt는 1993년 Bruce Schnell이 출시한 Blowfish 암호화 알고리즘을 사용합니다. 특히 bcrypt는 Paul Kircher의 알고리즘을 사용하여 구현됩니다. bcrypt와 함께 배포되는 소스 코드는 원본 버전에서 약간 수정되었습니다.
Express에서 bcryptjs를 사용하는 단계:
1. bcryptjs 모듈을 설치합니다.
npm install bcryptjs --save
2. 암호화가 필요한 모듈에 bcryptjs 라이브러리를 도입합니다.
var bcrypt = require('bcryptjs');
3. 등록할 때 HASH 값을 입력하고 데이터베이스에 삽입합니다.
var salt = bcrypt.genSaltSync(10);
5. 로그인할 때 HASH 값을 확인하고 데이터베이스에 삽입합니다.
router.post('/register', function(req, res, next){ // 从连接池获取连接 pool.getConnection(function(err, connection) { // 获取前台页面传过来的参数 var param = req.query || req.params; /*生成HASH值*/ var hash = bcrypt.hashSync(param.pwd,salt); // 建立连接 新增用户 connection.query(userSQL.insert, ["",hash,param.phone,"","","",0], function(err, result) { res.send(result); // 释放连接 connection.release(); }); }); });
위에서는 bcryptjs의 동기 사용을 사용합니다.
해시 비밀번호 생성:
router.post('/login', function(req, res, next){ // 从连接池获取连接 pool.getConnection(function(err, connection) { // 获取前台页面传过来的参数 var param = req.query || req.params; // 建立连接 根据手机号查找密码 connection.query(userSQL.getPwdByPhoneNumber, [param.phone], function(err, result) { if(bcrypt.compareSync(param.pwd,result[0].password)){ res.send("1"); connection.query(userSQL.updateLoginStatusById, [1,result[0].id], function(err, result) { }); }else{ res.send("0"); } // 释放连接 connection.release(); }); }); });
비밀번호 확인:
bcrypt.genSalt(10, function(err, salt) { bcrypt.hash("B4c0/\/", salt, function(err, hash) { // Store hash in your password DB. }); });
다음은 Bcrypt를 사용하여 데이터를 암호화하는 간단한 예입니다.
bcrypt.compare("B4c0/\/", hash).then((res) => { // res === true });
위는 모든 사람을 위해 정리한 내용입니다. 앞으로 모든 사람에게 도움이 되기를 바랍니다. .
관련 기사:
nodejs의 캐시로 redis를 통해 구현된 캡슐화된 캐시 클래스기본 JavaScript를 사용하여 돋보기 효과 달성Vue Socket.io 소스 코드에 대한 자세한 분석위 내용은 Express에서 bcryptjs 비밀번호 암호화 사용의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!