cryptoJSを用いて
htmlに書き込まれたname,passwordを
公開鍵暗号を用いて暗号化し
socket.ioでサーバー側に送信したいのですが、
上手くいきません。
参考にしたURLはこちらです
https://memolog.org/2015/08/try-cryptojs.html
エラー文では
フロントコンソールで
・Failed to load resource: the server responded with a status of 500 (Internal Server Error)
・Uncaught ReferenceError: CryptoJS is not defined
の二つが出てきてしまいます。
socketを使わずにhtmlのみで実行すれば
上手く暗号化が出来ている事が分かりました。
しかし、サーバーを絡めて
実行するとエラー文が出てきてしまいます。
cryptojs is not defined ということはコールバックの順序がおかしいのでしょうか?
html
1<!DOCTYPE html> 2<html lang="ja" dir="ltr"> 3<head> 4 <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"> 5 </script> 6 <script type="text/javascript" src="/Users/motegiyuta/Desktop/interface/bower_components/crypto-js/crypto-js.js"></script> 7 <script src="http://localhost:3000/socket.io/socket.io.js"></script> 8 <meta charset="utf-8"> 9 <title>practice</title> 10</head> 11<body> 12 <form name="myid"> 13 <input type="text" name="name"> 14 <input type="number" name="password"> 15 <input type="submit" value="送信"> 16 17 <script type="text/javascript"> 18 let socket = io.connect() ; 19 socket.on("key",function(key){ 20 let name = $(`input[name="name"]`).val() ; 21 let pass = $(`input[name="password"]`).val() ; 22 23 24 let encrypted_name = CryptoJS.AES.encrypt(name, key); 25 let encrypted_pass =CryptoJS.AES.encrypt(pass, key); 26 console.log(encrypted_name.toString()); 27 console.log(encrypted_pass.toString()); 28 29 socket.emit("cryp",function(data){ 30 name : encrypted_name.toString() 31 password : encrypted_pass.toString() 32 }); 33 }); 34 35 </script> 36 </body> 37 </html> 38
⬇︎serverを立てているファイルで略してあります
js
1case "/login.html": 2 fs.readFile("./login.html","utf8",(err,data)=>{ 3 if(err){ 4 res.writeHead(500) ; 5 return res.end("Error") ; 6 } 7 res.writeHead(200,{"Content-Type":"text/html"}) ; 8 res.write(data) ; 9 login_socket(req,res,function(){ 10 res.end() ; 11 }); 12 }); 13 break ; 14 15function login_socket(req,res){ 16 17 io.sockets.on("connection",function(socket){ 18 let key = "aiueo" ; 19 socket.emit("key",key) ; 20 console.log("keysend!") ; 21 22 socket.on("cryp",function(data){ 23 let CryptoJS = require('crypto-js'); 24 let decrypted_name = CryptoJS.AES.decrypt(data.name, key); 25 let decrypted_pass = CryptoJS.AES.decrypt(data.pass, key); 26 console.log(decrypted_name.toString(CryptoJS.enc.Utf8)); 27 console.log(decrypted_pass.toString(CryptoJS.enc.Utf8)); 28 29 let user = new Mongo(decrypted_name.toString(CryptoJS.enc.Utf8),decrypted_pass.toString(CryptoJS.enc.Utf8)) ; 30 user.login(req,res) ; 31 }); 32 }); 33} 34
どなたかお願いいたします
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/12/14 18:19
2018/12/14 18:50