【问题标题】:Correct Hashing Algorithm/Function正确的散列算法/函数
【发布时间】:2014-07-21 00:05:07
【问题描述】:

是否有任何安全的散列算法/函数可以提供所有字母和数字,而不仅仅是 0-9、a-f。

所以输出可能包含:0-9、a-z、A-Z 甚至一些符号。

【问题讨论】:

  • 您是否有理由寻找一种算法,而不是您使用的任何语言的一些内置类型?

标签: hash language-agnostic passwords


【解决方案1】:

任何哈希算法,真的。

十六进制只是它们的常见表示。查看this code snippet(使用,因为你没有标记编程语言):

use Digest::MD5 qw/md5 md5_hex/;
use MIME::Base64;

my $str = 'Foobar';

# Hexadecimal representation
print md5_hex($str),"\n";

# Base64 encoded representation
print encode_base64(md5($str));

输出:

89d5739baabbbe65be35cbe61c88e06d
idVzm6q7vmW+NcvmHIjgbQ==

第一个输出是字符串的 MD5 摘要的十六进制表示;第二个是原始摘要的 Base64 编码表示。

这适用于任何消化算法。然而,它并不影响底层算法实际上的安全程度。

【讨论】:

    【解决方案2】:

    使用您最喜欢的散列算法/函数并将输出转换为 base64。在 Java 中执行此操作的机制在这里:how to convert hex to base64

    请注意,哈希值仍然相同,但呈现方式会有所不同。如果您有理由想要使用更完整的符号集,也许您可​​以编辑您的问题。

    【讨论】:

    • 这促使我研究base 64,它完全符合我的需要。
    • 如果您正在考虑设计自己的哈希算法,而您没有博士学位。数学和十年密码学经验,请阅读:security.stackexchange.com/questions/18197/…
    猜你喜欢
    • 1970-01-01
    • 2023-03-11
    • 1970-01-01
    • 2012-06-28
    • 2012-10-30
    • 2011-07-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多