{
try {
let userId
if (storage) {
userId = storage.data.userId
options.token = storage.data.token
}
const timeId: string = JSON.stringify(Date.now())
const storageKey: any = JSON.parse(
localStorage.getItem(SECRETCRYPTOKEY) as any
)
if (storageKey) return storageKey
userId ? (options.body = { userId }) : (options.body = { timeId })
const { data } = await dispatch(useHttp(options))
const dataFirst = data
if (dataFirst.publicKey) {
const newKey = new NodeRSA({ b: 1024 })
const publicKey = newKey.exportKey("public")
const privateKey = newKey.exportKey("private")
const encrypt = new NodeRSA(dataFirst.publicKey)
const publicKeyToString: string = JSON.stringify(publicKey)
const clientKey = encrypt.encrypt(publicKeyToString, "base64")
options.body = { userId, timeId: !userId && timeId, clientKey }
const { data } = await dispatch(useHttp(options))
const decrypte = new NodeRSA(privateKey)
const decryptData = decrypte.decrypt(data, "utf8")
localStorage.setItem(SECRETCRYPTOKEY, decryptData)
const decryptDataToSting: string = JSON.parse(decryptData)
if (!userId) {
setTimeout(() => localStorage.removeItem(SECRETCRYPTOKEY), 9000)
}
return decryptDataToSting
}
} catch (e) {
console.log(e)
}
}
}
Мне кажется такой кол проще на кодпен заливать
Как улучшить это код? Код рабочий сервер и клиент
Я рефакторингом не занимаюсь чужого кода :)
Ок спасибо
Зачем эти пляски с шифрами, если ты в итоге секретКлюч в локалстор кладёшь?
Ты прав но еще раз читай там публичний ключ открито отправляется а привать ключ отправяется зашифрования
Если нет клуча в локалхосте то клет отправляет запрашвается на публичний ключ от сервера потом сгенеруеть публик ключ и приват ключ сохраняет и отправляет клиенту публичний ключ клет сгенеруеть ключ публик ключ и приват ключ и зашифрует свой публик ключ отправляет серверу теперь сервер с публичний ключа клиента зашифрует оба ключа отправляет клиенту и он зашифрует сохраняет в локалстородже )))
забей, я после строчки localStorage.getItem(SECRETCRYPTOKEY) as any не читал
Ахахах на каком языке ты говоришь ?
Ну вот он работает только хотел узнать как улучшить )))
Хранить приватные данные в локалстораже не очень хорошее решение, мне кажется
Где хранить ? Я учусь не проф для это и спрашиваю
Куки
Ок хороший идея спасибо
Обсуждают сегодня