Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/329.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Authentication “a”应该多长时间;“记住我”;是什么?_Authentication - Fatal编程技术网

Authentication “a”应该多长时间;“记住我”;是什么?

Authentication “a”应该多长时间;“记住我”;是什么?,authentication,Authentication,我正在尝试使用带有用户用户名和令牌的cookie将“记住我”功能添加到网站中,该令牌也加密存储在数据库中。我的问题是这个代币应该有多长?说128位,在我看来是16个字符。我不太担心重复,因为即使是256个字符的字符集中的16个字符也提供了大量的可能性,同时重复的可能性很小 代币应该有多长?(我不想知道如何生成值或其独特性。)只需使用一个。许多数据库支持它们作为本机类型;它们在大多数流行的语言/框架中易于操作;完美地从一个平台翻译到另一个平台;而且。我认为这更多地取决于数值的随机性,而不是它的长度

我正在尝试使用带有用户用户名和令牌的cookie将“记住我”功能添加到网站中,该令牌也加密存储在数据库中。我的问题是这个代币应该有多长?说128位,在我看来是16个字符。我不太担心重复,因为即使是256个字符的字符集中的16个字符也提供了大量的可能性,同时重复的可能性很小


代币应该有多长?(我不想知道如何生成值或其独特性。)

只需使用一个。许多数据库支持它们作为本机类型;它们在大多数流行的语言/框架中易于操作;完美地从一个平台翻译到另一个平台;而且。

我认为这更多地取决于数值的随机性,而不是它的长度。如果256位散列只是一些容易猜测或缩小的内容(例如基于时间的唯一ID)的散列,那么它就根本不安全

然而,正如您所说,您并没有特别询问如何使其足够随机

估计需要2^80(或更多)的操作才能打破某些东西通常是一个很好的措施。这意味着80位哈希是安全的。(如果你容易受到生日攻击,你需要双倍的ie 160位,但我认为这种情况不适用)


就个人而言,为此我使用256位哈希。当base64编码时,它们的长度压缩到只有43个字符,即所有可打印字符。我认为,尽管这远远超过了我的需要,但让它们这么长也不是什么大麻烦。

你可以看看其他人都做了些什么,比如这表明令牌的长度在128到160位之间,然后也做同样的事情。我喜欢,它说122位应该足够“用于大多数目的,包括核导弹的发射代码。”如果你相信实际的发射代码,这很有趣。关于我们160位代币的安全性,到此为止。

您能否提供您在问题中提到的网站链接。你是在问cookie中存储的值应该有多长,或者你应该如何生成该值,以及它应该与什么相关?修改了问题并添加了网站链接。为什么你需要知道“正确”的长度是多少?这里没有什么东西。你怎么能不关心如何生成它而关心长度呢?它们是密切相关的。我不在乎如何生成它,因为我有20种不同的方法来生成密钥。我想知道长度,因为我不确定。我知道他们关系密切,但似乎只有一个人理解了问题的重点。对不起,我想不清楚。我想知道长度。GUID意味着长度——您在问题中提到的128位/16个字符。我想知道它应该是什么长度。16是正确的长度吗?@Darryl对于传输和纯文本存储(如cookies),GUID通常编码为十六进制,即32个字符。v4 UUID应该很好,并且易于获取和使用,并且有利于您利用其他人的工作,他们可能比我们其他人有更多的时间考虑这个问题。但是,请注意,特别声明“它们不应用作安全功能(仅拥有就可以访问的标识符)”。嗯,在大多数情况下,GUID不容易猜测或缩小范围。