我使用SQL将社会安全号码转换为MD5哈希值。我想知道python / pandas中是否有一个模块或函数可以做同样的事情。
我的sql脚本是:
CREATE OR REPLACE FUNCTION MD5HASH(STR IN VARCHAR2) RETURN VARCHAR2 IS
V_CHECKSUM VARCHAR2(32);
BEGIN
V_CHECKSUM := LOWER(RAWTOHEX(UTL_RAW.CAST_TO_RAW(SYS.DBMS_OBFUSCATION_TOOLKIT.MD5(INPUT_ST RING => STR))));
RETURN V_CHECKSUM;
EXCEPTION
WHEN NO_DATA_FOUND THEN
NULL;
WHEN OTHERS THEN
RAISE;
END MD5HASH;
SELECT HRPRO.MD5HASH('555555555') FROM DUAL
感谢。
我道歉,因为我回过头来看我的初步问题,这让人非常困惑。
我的数据框包含以下标题:
df[['ssno','regions','occ_ser','ethnicity','veteran','age','age_category']][:10]
其中ssno是个人信息,我想将其转换为md5哈希编号,然后在数据框中创建一个新列。
谢谢...抱歉让人感到困惑。
现在我必须将我的文件发送到Oracle,然后将ssn转换为hash,然后导出回来,以便我可以继续在Pandas中使用它。我想消除这一步。
答案 0 :(得分:2)
使用标准hashlib模块:
import hashlib
hash = hashlib.md5()
hash.update('555555555')
print hash.hexdigest()
<强>输出强>
3665a76e271ada5a75368b99f774e404
正如timkofu评论中所提到的,你也可以使用
更简单地做到这一点print hashlib.md5('555555555').hexdigest()
当您想要分阶段生成校验和时,.update()
方法很有用。有关详细信息,请参阅hashlib documentation(或Python 3 version)。
答案 1 :(得分:1)
带有md5
的hashlib可能是你感兴趣的。
import hashlib
hashlib.md5("Nobody inspects the spammish repetition").hexdigest()
输出:
bb649c83dd1ea5c9d9dec9a18df0ffe9
此模块中始终存在的哈希算法的构造函数为md5(), sha1(), sha224(), sha256(), sha384(), and sha512()
。
如果您想要更精简的结果,那么您可以尝试sha
系列
sha224
的输出:
'a4337bc45a8fc544c03f52dc550cd6e1e87021bc896588bd79e901e2'
有关详情:hashlib