Hash 可变输出哈希函数

Hash 可变输出哈希函数,hash,Hash,我知道有一些散列函数,从一个可变长度的输入可以得到一个固定的输出。举一个最简单的例子,使用十的模块,无论输入数字有多大,我都会得到0到9之间的输出 我需要从一个未知的密码,一个可变长度的输出。我的第一个想法是使用这个模块,将prim数增加到输出所需的位数 我的问题是: 我必须像处理长密码一样处理短密码 我不知道在编写程序之前输出需要多长时间,即使我知道在用户设置密码后,如果他修改了文件,我可能需要更改密码 我的第一个想法是使用一个简单的函数,并根据需要修改它 如果我必须散列123,但我需要有

我知道有一些散列函数,从一个可变长度的输入可以得到一个固定的输出。举一个最简单的例子,使用十的模块,无论输入数字有多大,我都会得到0到9之间的输出

我需要从一个未知的密码,一个可变长度的输出。我的第一个想法是使用这个模块,将prim数增加到输出所需的位数

我的问题是:

  • 我必须像处理长密码一样处理短密码
  • 我不知道在编写程序之前输出需要多长时间,即使我知道在用户设置密码后,如果他修改了文件,我可能需要更改密码
我的第一个想法是使用一个简单的函数,并根据需要修改它

如果我必须散列123,但我需要有5个字符作为输出,我会这样做:

  • 我在右边加了2个零,将输入更改为12300
  • 我取最低的5位素数(10007)
  • 然后我让我的散列做12300%10007=02293
  • 但由于我可能需要成百上千的输出,所以我很确定模块并不能解决我的问题

    我也可以尝试创建自己的哈希函数,但我不知道如何验证它是否有效或是否是垃圾


    对于这类问题,文献中是否有一些常见的解决方案?

    “可变长度输出”-您需要的输出长度是否有任何限制/范围?例如,如果总是为了确保这里没有根本性的误解,如果您想要一个介于0和9999之间的值,您可以采用更大的散列(例如16、32或64位散列),然后应用
    %10000
    。我想将用户密码作为输入,然后为各种用途进行操作。例如,我可能希望它变为256位长,或者512位,甚至1024位,这取决于具体情况。让我们假设我有一个(用户密码),B(一些盐系统)给C作为输出。我可以做A*B=C,增加B得到更大的C,但我失去了一些不那么琐碎的东西。