使用python脚本将字符或整数转换为md5哈希

时间:2015-01-28 11:33:42

标签: python sql md5

我使用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中使用它。我想消除这一步。

2 个答案:

答案 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