hash - SAS MD5 散列
问题描述
我想使用 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
解决方案
没错,您只需要应用十六进制格式即可$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 值以增加安全性;这些是字符串连接到字符串的开头或结尾。
推荐阅读
- javascript - 带有动态键的 JS SetInterval 未清除
- node.js - 是否可以在图像保存/上传之前使用 Multer 获取图像尺寸(宽度和高度)
- python - 加入两个表,文件名有额外的字符串,正则表达式从文件名中删除字符串并进行连接
- java - Android Studio 替换了我的 main.dart 文件中的代码
- c# - C#:使用 IQueryable 注入 DbContext 时无法访问 ASP.NET Core 中的已处置对象
- java - 启动 tomcat 失败并出现无效字节码错误
- python - 为什么我的 python 重复功能不起作用?
- sql - 如何执行与实际统计信息相同的查询结果
- azure - azure 中是否有确保默认启用数据库审核的策略
- hadoop - 在配置单元中的 if 子句中使用子查询的替代选项