Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/database/10.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
Database 为什么要将密码哈希值截断为14个字符?_Database_Security_Passwords_Hash - Fatal编程技术网

Database 为什么要将密码哈希值截断为14个字符?

Database 为什么要将密码哈希值截断为14个字符?,database,security,passwords,hash,Database,Security,Passwords,Hash,我正在编写一些代码,在某个时刻,它正在准备一个密码以存储在数据库中。在粗略的伪代码中,它执行以下操作: encrypted_password = truncate(hash(password), 14) 即,计算密码的哈希值,然后将哈希值截断为14个字符 有人知道为什么应用程序会以这种方式截断散列吗?这是经过深思熟虑的,所以我怀疑这是为了使散列与一些我不知道的相当标准的密码存储类型兼容 (请忽略这不是存储密码的好方法,没有盐渍等)我能想到的唯一原因是保持与某些遗留系统的兼容性。事实上,这将是

我正在编写一些代码,在某个时刻,它正在准备一个密码以存储在数据库中。在粗略的伪代码中,它执行以下操作:

encrypted_password = truncate(hash(password), 14)
即,计算密码的哈希值,然后将哈希值截断为14个字符


有人知道为什么应用程序会以这种方式截断散列吗?这是经过深思熟虑的,所以我怀疑这是为了使散列与一些我不知道的相当标准的密码存储类型兼容


(请忽略这不是存储密码的好方法,没有盐渍等)

我能想到的唯一原因是保持与某些遗留系统的兼容性。事实上,这将是我能想到的做出有意识的决定以牺牲安全的唯一原因

例如,考虑一个网络,它有一个非常旧的UNIX盒子,只能在经典的crypt()函数中使用八个字符的密码。为了让他们对其他系统执行身份验证,或者让其他系统对那些遗留UNIX系统执行身份验证,每个人都必须使用相同的方法操作身份验证数据


事实上,通过网络传输密码(哈希、哈希+盐或其他)的唯一原因是为了遵守遗留系统或具有我称之为“遗留需求”的系统。这同样适用于在安全性方面相对较弱的系统。

如果它将其存储在数据库中,可能是设计它的人创建了一个
char(14)
列。。。为什么我不知道不是AOL,而是创作公司是微软认证的合作伙伴。:)我会将其标记为正确的-尽管我目前无法确定这是否是真正的原因。