在会话中保存了RSA私钥,但它已被破坏

时间:2017-05-10 08:28:06

标签: node.js session encryption express-session cryptico

这是我打算做的。

  1. 用户致电我的网站时生成RSA私钥/公钥
  2. 将公钥提供给浏览器
  3. 在会话中保存私钥(node.js,express-session)
  4. 当用户尝试登录时使用公钥加密id和pw,使用保存在会话中的私钥对其进行解密
  5. 这就是问题所在。我这样保存了私钥

    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密钥时,突然变得更短,我无法解密该消息,因为有一个错误并且它说'你的私钥与公钥不匹配'

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

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

    由于这个问题,我无法使用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
    
    }));
    

1 个答案:

答案 0 :(得分:0)

它似乎没有详细记录,但试试这个:

prepack