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

converting character or integer to md5 hash using python script

我使用 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 转换为哈希,然后导出回来,以便我可以在 Pandas 中继续使用它。我想去掉这一步。

使用标准 hashlib 模块:

import hashlib

hash = hashlib.md5()
hash.update('555555555')
print hash.hexdigest()

输出

3665a76e271ada5a75368b99f774e404

如 timkofu 的评论中所述,您也可以更简单地执行此操作,使用

print hashlib.md5('555555555').hexdigest()

当您想分阶段生成校验和时,.update() 方法很有用。请参阅 hashlib documentation (or the Python 3 version) 了解更多详情。

带有 md5 的 hashlib 可能是您的兴趣。

import hashlib
hashlib.md5("Nobody inspects the spammish repetition").hexdigest()

输出:

bb649c83dd1ea5c9d9dec9a18df0ffe9

此模块中始终存在的哈希算法的构造函数是 md5(), sha1(), sha224(), sha256(), sha384(), and sha512()

如果你想要更浓缩的结果,那么你可以尝试sha系列

sha224 的输出:

'a4337bc45a8fc544c03f52dc550cd6e1e87021bc896588bd79e901e2'

更多详情:hashlib