Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/algorithm/11.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/security/4.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
Algorithm 目前最安全的单向加密算法是什么?_Algorithm_Security_Passwords_Md5_Password Hash - Fatal编程技术网

Algorithm 目前最安全的单向加密算法是什么?

Algorithm 目前最安全的单向加密算法是什么?,algorithm,security,passwords,md5,password-hash,Algorithm,Security,Passwords,Md5,Password Hash,很多人都知道,单向加密是在数据库中加密用户密码的一种简便方法。这样,即使是数据库管理员也无法知道用户的密码,但必须猜测密码,使用相同的算法加密密码,然后将结果与数据库中的加密密码进行比较。这意味着计算密码的过程需要大量的猜测和大量的处理能力 鉴于计算机的速度越来越快,数学家们还在开发这些算法,考虑到现代计算能力和加密技术,我想知道哪一种算法是最安全的 现在,我已经完全使用MD5很多年了,我想知道我是否还应该做些什么。我应该考虑另一种算法吗 另一个相关问题:对于这样一个加密密码,一个字段通常应该有

很多人都知道,单向加密是在数据库中加密用户密码的一种简便方法。这样,即使是数据库管理员也无法知道用户的密码,但必须猜测密码,使用相同的算法加密密码,然后将结果与数据库中的加密密码进行比较。这意味着计算密码的过程需要大量的猜测和大量的处理能力

鉴于计算机的速度越来越快,数学家们还在开发这些算法,考虑到现代计算能力和加密技术,我想知道哪一种算法是最安全的

现在,我已经完全使用MD5很多年了,我想知道我是否还应该做些什么。我应该考虑另一种算法吗


另一个相关问题:对于这样一个加密密码,一个字段通常应该有多长时间?我必须承认,我对加密几乎一无所知,但我假设MD5散列(作为一个例子)可能更长,可能需要更多的处理能力才能破解。或者字段的长度根本不重要,只要加密的密码首先适合它?

要增加密码强度,您应该使用更多种类的符号。如果密码中有8-10个字符,那么就很难破解。虽然使其更长将使其更安全,但前提是使用数字/字母/其他字符

SHA1是另一种散列(单向加密)算法,速度较慢,但其摘要较长。(编码消息)(160位),其中MD5只有128位


那么SHA2就更安全了,但它使用的更少。

加密密码总是一种额外的防御

$salt = 'asfasdfasdf0a8sdflkjasdfapsdufp';
$hashed = md5( $userPassword . $salt );
好问题!这是一本好书。特别是,作者声称MD5不适合哈希密码:

问题是MD5速度很快。它的现代竞争对手也是如此,比如SHA1和SH256。速度是现代安全散列的一个设计目标,因为散列是几乎所有密码系统的一个构建块,通常在每个数据包或每个消息的基础上执行请求

速度正是您在密码哈希函数中不想要的。

文章接着解释了一些替代方案,并建议将其作为“正确的选择”(他的话,而不是我的话)


免责声明:我根本没有尝试过Bcrypt。认为这是一个友好的建议,但不是我可以备份我自己的技术经验。

NIST目前正在运行一个竞赛,选择一个新的散列算法,就像他们选择AES加密算法一样。因此,这个问题的答案在几年后可能会有所不同

你可以查阅提交的材料,自己研究,看看是否有你想使用的材料

警告:自从这篇文章于2010年发表以来,GPU已经被广泛部署到暴力密码哈希中。价格适中的GPU 每秒可以运行100亿MD5。这意味着即使是 完全随机的8字符字母数字密码(可能为62 角色)可以在6小时内强制使用暴力。SHA-1只是稍微 慢一点,需要一天时间。您的用户密码要弱得多,而且 (即使是盐渍)将以每年数千个密码的速度下降 第二散列函数被设计为快速的。你不会想要这个的 密码。使用scrypt、bcrypt或PBKDF-2

MD5早在1996年就被发现很弱,用于加密目的SHA-1是常用的替代品,但是。哈希函数的数量是SHA-1的当前数量。SHA-2的成员分别称为SHA-224、SHA-256、SHA-384和SHA-512

目前,一些散列函数是下一个标准化加密散列算法。2012年将选出一名获胜者。这些都不应该被使用

<强>密码散列>,您也可以考虑使用类似的东西。它的设计速度足够慢,使得大规模暴力攻击不可行。你可以自己调整慢度,这样当计算机变得越来越快时,它就可以变慢

警告:bcrypt基于一种较旧的双向加密算法,即Blowfish,目前已有更好的替代算法。我认为bcrypt的加密散列属性还没有完全理解。如果我错了,有人纠正我;我从未找到一个可靠的来源,从加密的角度讨论bcrypt的属性(除了它的缓慢性)

与公钥加密或数字签名相比,密码散列的冲突风险要小得多,这可能有点让人放心。现在使用MD5对于SSL来说是一个巨大的挑战,但对于密码散列来说并不是灾难性的。但是如果你有选择的话,只需选择一个更强的

使用一个好的散列函数是为了保护您的密码。您应该将长密码和长密码一起散列。如果可能的话,你还应该帮助你的用户选择更强的密码或传递短语。时间越长越好

看到计算机的速度越来越快,数学家们还在开发这些算法

RSA加密是安全的,因为它依赖于一个非常大的数字,很难将其考虑在内。最终,计算机的速度将足以在合理的时间内计算出数字。为了保持领先,你需要使用一个更大的数字


但是,对于大多数网站来说,对密码进行哈希运算的目的是使有权访问数据库的人阅读密码时不方便,而不是提供安全性。为此,MD5是fine1

这意味着,如果恶意用户获得对整个数据库的访问权,他们就不需要密码。(锁