2016-06-30 3 views
0

db에 암호화 값을 삽입하려고했는데 암호화 된 값을 db에 삽입 할 수없는 값을 암호화 할 수 있습니다.노드 js의 암호화

app.post('/insert', function (req, res) { 

    // var Fname=req.body.fname; 
    // var Lname=req.body.pwd; 

    var data = { 
     Fname: req.body.fname, 
     Lname: req.body.Lname 
    }; 

    function hashP(getit, cb) { 
     bcrypt.genSalt(15, function (err, salt) { 
      if (err) { 
       return console.log(err); 
      } 
      cb(salt); 
      bcrypt.hash(getit, salt, function (err, gotit) { 
       if (err) throw err; 
       return this.cb(null, gotit); 
      }) 
     }) 
    } 

    hashP(data.Lname, function (err, gotit) { 
     if (err) throw err; 
     data.Lname = hash; 
    }) 

    console.log(data.Lname); 
    con.query("insert into test set ?", [data], function (err, rows) { 
     if (err) throw err; 
     res.send("Value has bee inserted"); 
    }) 
}) 

이 내 HTML 양식 페이지입니다 :

<body> 
<form action="http://localhost:8888/insert" method="POST" > 
    <label>Name:</label><input type="text" name="fname"></br> 
    <label>Lname:</label><input type="text" name="Lname"></br> 
    <button type="submit">Submit</button> 
</form> 
</body> 
+0

무엇이 오류입니까? –

+0

DB에 직접 삽입 된 html 형식의 데이터가 오류가 발생하지 않았습니다. 그러나 암호화 된 데이터로 변환되지는 않습니다. 그리고 터미널에 체크인 할 때 두 개의 Lname 값을 얻었습니다. 하나는 직접 데이터이고 다른 하나는 암호화 된 데이터입니다. – chozhan

+0

'hash'가 어디에도 정의되어 있지 않기 때문에 이것은 틀린 것 같습니다 :'data.Lname = hash;'. 'gotit'을 대신 사용 하시겠습니까? – jfriend00

답변

0

hashP(getit,cb) 그것을 나쁜 시간에 cb 기능을하지 않는 호출 함수처럼 보인다? 당신은 다음과 같은 핸들러 내부를 호출해야합니다, 외에도 다음과 같은

function hashP(getit, cb){ 
     bcrypt.genSalt(15, function (err, salt){ 
      if(err) { 
       return cb(err, null); 
      } 
      bcrypt.hash(getit, salt, function (err, hash){ 
       if(err) { 
        return cb(err, null); 
       } 
       return cb(null, hash); 
      }) 
     }) 
    } 

을 시도 :

app.post(...., function(req, res) { 

    var data = { ... } 

    function hashP(data, cb){ ... } 

    hashP(data.Lname, function (err, hash) { 
     if (err) throw err; 
     data.Lname = hash; 
     // NOW, SAVE THE VALUE AT DB 
     con.query("insert into test set ?", [data], function (err, rows) { 
     if (err) throw err; 
     res.send("Value has bee inserted"); 
    }) 
    } 
} 

이 문제는 여기에 비동기 실행했다, 당신은 전에 datacon.query를 호출했다 data은에서 반환됩니다 hashP

+0

하지만 암호화를 통해 데이터를 암호화하기 전에 데이터를 암호화하고 싶습니다. – chozhan

+0

답변을 수정했습니다. 확인해 봐! – Manu

+0

Mac을 완벽하게 작동시켜 주셔서 감사합니다. – chozhan