随机生成的本地存储密钥

Randomly generated localstorage keys

本文关键字:存储 密钥 随机      更新时间:2023-09-26

我正在创建一些需要许多本地存储密钥的东西。因此,我希望使用Math.floor随机生成一个用户密钥。

我使用了以下内容来保存本地存储密钥

var randomnumber = Math.floor((Math.random()*100000000)+1)
var randomnumberstringify = String(randomnumber) 
    function savebox(id) {
        var answer = document.getElementById('box').value;
        document.write(randomnumberstringify);
        localStorage.setItem(randomnumberstringify, answer);
    }

和下面加载密钥

    function loadbox() {
        if (localStorage.getItem(randomnumberstringify)) {
        var answer = localStorage.getItem(randomnumberstringify);
    }
    else {
        var answer = ' ';
    }
    document.getElementById('box').value = answer;
    }

但是,正如您所看到的,加载函数使用"随机数字符串化"。这是另一个随机数

所以基本上你用一个随机数保存并加载另一个随机数(显然不存在(

有没有更好的方法使用随机数作为加载键和保存键?

如果loadsave调用发生在同一浏览器会话中,并且randomnumberstringify密钥存在于 save 函数和load函数都可以访问的作用域中,并且不会为该作用域重新创建,则使用此方法应该没问题。

但是,您尝试做的是将本地存储用作持久存储单元,这意味着您希望在不同的页面加载或不同的浏览器会话中访问给定用户的相同数据,其中在每次加载中,javascript 变量空间都会被删除。

如果您的情况是后者,则应使用哈希函数生成密钥,并使用用户依赖字符串生成哈希函数,以便每次最终为相同的用户生成相同的密钥。

例如,假设您在 JavaScript 环境中定义了 sha1 哈希函数

var randomnumberstringify = sha1('username');

此密钥生成方法允许您每次都为同一用户获取相同的密钥。而且,您可以毫无问题地设置和仅获取相关数据。

在这里 :http://www.webtoolkit.info/javascript-sha1.html 你可以找到哈希函数 SHA1 的 javascript 实现。