Php 计算MCrypt IV和哈希的最大长度?

Php 计算MCrypt IV和哈希的最大长度?,php,hash,cryptography,mcrypt,rijndael,Php,Hash,Cryptography,Mcrypt,Rijndael,我一直在做一些关于创建不同散列的研究,等等。我知道这个函数,但是我目前正在使用mcrypt创建一个初始化值。出现的问题是,如果密码大于8个字符,则会剪裁一些哈希密码 我的当前代码将salt(由创建的)添加到用户密码中。然后使用函数对其进行加密。密码的标准为8->40个字符 我在MySQL中的列看起来像使用拉丁语1_瑞典语ci排序的varchar(64) 如何计算初始化值的最大长度(MySQL长度),以及用户输入密码的最大长度 免责声明:我故意省略了加密,但对于不同密码块初始值长度以及散列长度的文

我一直在做一些关于创建不同散列的研究,等等。我知道这个函数,但是我目前正在使用mcrypt创建一个初始化值。出现的问题是,如果密码大于8个字符,则会剪裁一些哈希密码

我的当前代码将salt(由创建的)添加到用户密码中。然后使用函数对其进行加密。密码的标准为8->40个字符

我在MySQL中的列看起来像使用拉丁语1_瑞典语ci排序的varchar(64)

如何计算初始化值的最大长度(MySQL长度),以及用户输入密码的最大长度


免责声明:我故意省略了加密,但对于不同密码块初始值长度以及散列长度的文档,我将不胜感激。(不确定术语,希望有意义。)

散列函数以及
密码\u散列()
——使用HMAC或加密MAC实现不同的基于密码的密钥派生函数(PBKDF)——始终为任何输入值返回相同数量的数据。如果密码被截断,那是因为调用这些函数之前发生的代码。如果使用SHA-1,这些函数通常返回20个字节

当然,盐值也需要存储

如果使用十六进制存储,则需要的字符数是二进制值的两倍。如果使用base 64编码,则如果包含填充,则需要(
(大小+2)/3*4
)个字符

因此,您的密码可以任意长或短,salt每个字节需要一个字节(编码)


强烈建议您还存储所用函数的某种指示符。这可能是指示当前协议的单个字节。这样,一旦用户返回填写其(新)密码,您就可以升级每个条目的密码协议。

这是散列,而不是加密。加密是不适用的,因为加密不是单向的(除非你松开了密钥,在这种情况下,它或多或少是无用的)。很好的答案!我调查了这个问题,计算了每一步的长度。发现将某些字符创建为多个字符“填充”字符串长度的问题。哈希和salt从未改变过,无论密码的长度如何。