是否有任何安全的哈希算法/函数可以提供所有字母和数字,而不仅仅是0-9,a-f。
因此输出可能包含:0-9,a-z,A-Z甚至一些符号。
答案 0 :(得分:2)
任何哈希算法,确实。
十六进制只是它们的常见表示。查看this code snippet(使用perl,因为您没有标记编程语言):
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编码表示。
这适用于任何摘要算法。但是,它不会影响基础算法实际的安全性。
答案 1 :(得分:0)
使用您喜欢的散列算法/函数并将输出转换为base64。在Java中执行此操作的机制如下:how to convert hex to base64。
请注意,哈希值仍然相同,但演示文稿会有所不同。如果您有理由想要使用更全面的符号集,也许您可以编辑您的问题。