SAS MD5 哈希

问题描述 投票:0回答:2

我想使用 MD5 对 SAS 数据集中的敏感信息(1 个字段)进行哈希处理。但散列后的数据看起来很尴尬,即都是特殊字符。这是使用哈希函数的正确方法吗?

我的代码:

data md5; 
set sashelp.class (obs=2); 
md5 = md5(strip(name)); 
keep name md5; 
put _all_;
run; 

我的输出:

Name=Alfred Sex=M Age=14 Height=69 Weight=112.5 md5=�p?ޞ��\�rT]( _ERROR_=0 _N_=1
 Name=Alice Sex=F Age=13 Height=56.5 Weight=84 md5=dH���/�x{�͇!K8 _ERROR_=0 _N_=2
hash sas md5
2个回答
5
投票

是的,您只需应用十六进制格式

$hex32.
,这样它就可读。 MD5 是 128 位哈希,但有一种更好的哈希,称为 SHA256(),它是 256 位哈希。

代码:

data md5; 
set sashelp.class (obs=2); 
format md5 $hex32.; 
md5 = md5(strip(name)); 
keep name md5; 
put _all_;
run;

输出:

 Name=Alfred md5=86703FDE9E87DD5C0F8E1072545D0128 
 Name=Alice  md5=64489C85DC2FE0787B85CD87214B3810

注:

您还可以在字符串中添加 SALT 或 PEPPER 值以提高安全性;这些是连接到字符串开头或结尾的字符串。


0
投票

我很抱歉发帖到这个有点旧的线程,但在这个伟大的建议的帮助下,我偶然发现了这种情况,其中一些 md5 值在格式化为 $hex32 后似乎丢失了..

但是,我注意到,当我不将它们格式化为 $hex32 时,相同的行确实具有不丢失的 md5 值。但让它们显式地不格式化。这是某种编码问题还是我应该使用其他格式来使所有 md5 值可见?预先感谢您!

© www.soinside.com 2019 - 2024. All rights reserved.