Сохраненный закрытый ключ RSA в сеансе, но он был испорчен

Это то, что я планировал сделать.

  1. Сгенерированный закрытый/открытый ключ RSA, когда пользователь звонит на мой сайт
  2. Дайте открытый ключ браузеру
  3. Сохранить закрытый ключ в сеансе (node.js, экспресс-сеанс)
  4. Когда пользователь пытается войти в систему, используйте открытый ключ для шифрования идентификатора и пароля, расшифруйте его с помощью закрытого ключа, который я сохранил в сеансе.

И тут возникает проблема. Я сохранил закрытый ключ таким образом

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

и ключ RSA кажется довольно длинным, я прикрепил изображение -> RSA, который я сгенерировал первым (изображение)

Но когда я вызываю ключ RSA из сеанса в другом AJAX, он внезапно становится короче, и я не могу расшифровать сообщение, потому что возникает ошибка, и в нем говорится: «Ваш закрытый ключ не совпадает с открытым ключом».

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

RSA, загруженный из сеанса в 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

}));

person Yoo HyeonWoo    schedule 10.05.2017    source источник


Ответы (1)


Кажется, это не очень хорошо документировано, но попробуйте следующее:

// 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);
person robertklep    schedule 10.05.2017