0

这是我打算做的。

  1. 用户调用我的网站时生成的 RSA 私钥/公钥
  2. 给浏览器公钥
  3. 在会话中保存私钥(node.js,express-session)
  4. 当用户尝试登录使用公钥加密 id 和 pw 时,使用我保存在会话中的私钥解密它

问题来了。我这样保存了私钥

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

并且 RSA 密钥似乎很长,我附上了图像 -> 我首先生成的 RSA(图像)

但是,当我从另一个 AJAX 的会话中调用 RSA 密钥时,它突然变短了,我无法解密消息,因为出现错误,并且显示“您的私钥与公钥不匹配”

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

我从 app.post('/login') 中的会话加载的 RSA

由于这个问题,我不能使用 RSA 私钥/公钥来加密/解密 id/pw。为什么会发生?为什么 req.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

}));
4

1 回答 1

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);
于 2017-05-10T09:51:44.613 回答