>  기사  >  웹 프론트엔드  >  nodejs에서 비밀번호를 암호화하는 방법은 무엇입니까?

nodejs에서 비밀번호를 암호화하는 방법은 무엇입니까?

php中世界最好的语言
php中世界最好的语言원래의
2018-05-09 11:46:113063검색

이번에는 nodejs에서 비밀번호를 암호화하는 방법과 nodejs에서 비밀번호를 암호화할 때의 주의사항에 대해 알려드리겠습니다. 다음은 실제 사례입니다.

1. nodenode加密模块crypto的介绍

其实就是使用MD5加密的,不太安全,在实际开发中根据自己的方案进行加盐处理

二、在路由视图中使用加密方式

1、导入node自带的加密模块(不需要安装)

//导入加密模块
const crypto = require("crypto");

2、做一个用户注册,密码加密的视图

<p class="col-md-6">
  <h4>用户注册</h4>
  <form role="form" method="post" action="/regest">
    <p class="form-group">
      <label for="username">用户名:</label>
      <input id="username" type="text" placeholder="请输入用户名" name="username" class="form-control"/>
    </p>
    <p class="form-group">
      <label for="password">密码:</label>
      <input id="password" type="password" placeholder="请输入密码" name="password" class="form-control"/>
    </p>
    <p class="form-group">
      <input type="submit" value="提交" class="btn btn-success"/>
    </p>
  </form>
</p>
router.post("/regest",(req,res)=>{
  console.log(req.body);
  let name = req.body.username;
  let password = req.body.password;
  let md5 = crypto.createHash("md5");
  let newPas = md5.update(password).digest("hex");
  db("insert into user1(name,password) values(?,?)",[name,newPas],(err,data)=>{
    if (err){
      res.send("注册失败");
    }
    console.log(data);
    if (data){
      res.send("注册成功");
    }
  })
});

三、用户登录进行密码校验

1、把用户输入的密码用同样的方式加密处理
2、把加密后的密码与数据库中匹配

router.post("/login",(req,res)=>{
  let name = req.body.username;
  let password = req.body.password;
  let md5 = crypto.createHash("md5");
  let newPas = md5.update(password).digest("hex");
  db("select * from user1 where name = ?",[name],(err,data)=>{
    console.log(data[0].password);
    if (err){
      res.send("发生错误");
    }
    if (data){
      if (data[0].password === newPas){
        res.send("登录成功");
      }else {
        res.send("用户名或密码错误");
      }
    }
  })
})
<p class="col-md-6">
  <h4>用户登录</h4>
  <form role="form" method="post" action="/login">
    <p class="form-group">
      <label for="username2">用户名:</label>
      <input id="username2" type="text" placeholder="请输入用户名" name="username" class="form-control"/>
    </p>
    <p class="form-group">
      <label for="password">密码:</label>
      <input id="password" type="password" placeholder="请输入密码" name="password" class="form-control"/>
    </p>
    <p class="form-group">
      <input type="submit" value="提交" class="btn btn-success" id="sub-btn2"/>
    </p>
  </form>
</p>

四、扩展(一般我们加密处理)

1、利用随机数随机生成多少位数
2、利用可逆加密把第一步的生成的随机数加密
可逆加密有Base64Hex加密(具体自己百度)
3、将第二步加密好的随机数与我们真实密码拼接在一起
4、将第三步进行加密(MD5암호화 모듈
crypto

소개 실제로는 그다지 안전하지 않은 MD5 암호화를 사용합니다. 개발 자신의 계획에 따라 솔트를 추가하세요

2. 라우팅 뷰에서 암호화 방법을 사용하세요

1. 노드와 함께 제공되는 암호화 모듈을 가져옵니다(설치 필요 없음)

rrreee

2. "http://www.php.cn/code/6827.html" target="_blank">사용자 등록

, 비밀번호 암호화 보기

rrreeerrreee
3. 사용자 로그인

비밀번호 확인 수행


1. 동일한 방법으로 사용자가 입력한 비밀번호를 암호화합니다

2. 암호화된 비밀번호를 데이터베이스에 넣습니다. Matching🎜rrreeerrreee 🎜🎜🎜4. 확장 (일반적으로 처리를 암호화합니다)🎜🎜🎜🎜1. 난수를 사용하여 임의의 숫자를 생성합니다🎜2. 첫 번째 단계에서 생성된 난수를 암호화하려면 가역 암호화가 필요합니다. code>Base64 및 Hex 암호화(특히 Baidu에서) 🎜3. 두 번째 단계에서 암호화된 난수를 실제 비밀번호로 연결합니다. 🎜4. )🎜5. 네 번째 단계에서 해독 가능한 암호화를 수행합니다🎜6. 두 번째와 다섯 번째 단계에서 생성된 비밀번호를 비밀번호에 연결합니다🎜🎜🎜🎜5. 확장 프로그램(일반적으로 암호화된 로그인) 🎜🎜🎜🎜1. 로그인 시 비밀번호 획득🎜2. 획득한 비밀번호에서 난수 암호화 구간을 가로채기🎜3. 위의 암호화 방식(3,4,5,6)을 반복🎜🎜이 글에서 해당 사례를 읽어보셨을 거라 믿습니다. 더 흥미로운 정보를 보려면 PHP 중국어 웹사이트의 다른 관련 기사를 주목하세요! 🎜🎜추천 자료: 🎜🎜🎜vue는 storejs🎜🎜🎜🎜🎜p5.js_javascript 기술을 사용하여 불꽃놀이 특수 효과를 만들기 위한 샘플 코드🎜🎜🎜

위 내용은 nodejs에서 비밀번호를 암호화하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.