1

我正在创建需要许多本地存储密钥的东西。因此,我希望使用 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;
    }

但是,正如您所见,加载函数使用“randomnumberstringify”。这是另一个随机数

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

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

4

1 回答 1

0

如果您的loadandsave调用发生在同一个浏览器会话中,并且如果您的randomnumberstringify密钥存在于您的saveload函数都可以访问的范围内,并且不会为该范围再次重新创建,那么您应该可以使用这种方法。

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

如果您的情况是后一种情况,您应该使用哈希函数来生成密钥,并使用用户相关字符串来生成哈希函数,这样您最终每次都会为相同的用户生成相同的密钥。

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

var randomnumberstringify = sha1('username');

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

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

于 2013-10-07T12:09:21.420 回答