Это то, что я планировал сделать.
- Сгенерированный закрытый/открытый ключ RSA, когда пользователь звонит на мой сайт
- Дайте открытый ключ браузеру
- Сохранить закрытый ключ в сеансе (node.js, экспресс-сеанс)
- Когда пользователь пытается войти в систему, используйте открытый ключ для шифрования идентификатора и пароля, расшифруйте его с помощью закрытого ключа, который я сохранил в сеансе.
И тут возникает проблема. Я сохранил закрытый ключ таким образом
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
}));