2017-05-10 16 views
0

これは私が行う予定です。セッションでRSA秘密鍵を保存しましたが、それは台無しにされました

  1. 生成されたRSA公開鍵/秘密鍵の利用者は、私のウェブサイトを呼び出す
  2. はブラウザに公開鍵を付けたときに
  3. 保存セッションで秘密鍵(Node.jsの、表現・セッション)
  4. ユーザーがログインしよう公開鍵を使用してIDとパスワードを暗号化し、秘密鍵で復号化してセッションに保存しました。

ここに問題があります。私はこの方法のように、秘密鍵に

app.get('/', function(req, res) { 
var passPhrase = 'secret key'; 
bits = 1024; 
req.session.rsa = cryptico.generateRSAKey(passPhrase, bits); 
.... 
} 

を保存し、RSAキーはかなり長いようで、私は、画像を添付 - > RSA that I generated first(image)

しかし、私は別のAJAXでのセッションからRSAキーを呼び出すとき、突然、それが短くなり、Iそこにエラーであり、それが

app.post('/login', function(req, res) { 
console.log(req.session.rsa); 
} 

RSA that I loaded from the session in app.post('/login')

「あなたの秘密鍵は、公開鍵と一致していない」と言うので、メッセージを復号化することはできません

この問題のため、ID/pwの暗号化/復号化にRSAプライベート/パブリックキーを使用することはできません。なぜそれが起こるのですか?なぜreq.sessionのデータが損なわれたのですか?私はそれがなぜ変わるのか理解できません。

これはexpress-sessionの設定です。ここに問題はありますか?その他の理由はありますか?

app.use(session({ 
store: new RedisStore({ 
    host: 'localhost', 
    port: 6379, 
    client: redis, 
    resave: false 
}), 
secret: 'keyboard cat', 
cookie: { 
    maxAge: 1000 * 60 * 60 
}, 
resave : false, 
saveUninitialized : true 

})); 

答えて

0

十分に文書であるように見えるが、これを試していません。

// storing the key in the session 
req.session.rsa = JSON.stringify(cryptico.generateRSAKey(passPhrase, bits).toJSON()); 

// retrieving the key from the session 
let RSAKey = cryptico.RSAKey.parse(req.session.rsa); 
+0

は、ああ、それは働きます!ありがとう!! –

関連する問題