【问题标题】:converting character or integer to md5 hash using python script使用 python 脚本将字符或整数转换为 md5 哈希
【发布时间】:2015-01-28 11:33:41
【问题描述】:

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

【问题讨论】:

  • 你试过谷歌搜索python md5吗?我的第二个结果是:docs.python.org/2/library/hashlib.html
  • 这不就是hashlib.md5(ssn).hexdigest()吗?虽然 sha256 会是更好的选择。
  • @timkofu:我认为 david 想使用MD5 来兼容他现有的SQL 代码。但我可能完全错了。 :) 在这种情况下,如果他需要它提供的额外安全性,SHA256 将是一个更好的选择。
  • @timkofu:感谢您的回复。我不想使用 SQL 代码。这是我想消除的流程中的一个额外步骤。
  • @david:如果您的问题已解决,请选择正确答案

标签: python sql md5


【解决方案1】:

使用标准的 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)了解更多详情。

【讨论】:

    【解决方案2】:

    md5 的 hashlib 可能会引起您的兴趣。

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

    输出:

    bb649c83dd1ea5c9d9dec9a18df0ffe9
    

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

    如果你想要更简洁的结果,那么你可以试试sha系列

    sha224 的输出:

    'a4337bc45a8fc544c03f52dc550cd6e1e87021bc896588bd79e901e2'
    

    更多详情:hashlib

    【讨论】:

    • 我的意思是:他明确要求md5 哈希的解决方案。您的回答有点令人困惑,因为出于某种原因,您专注于 sha224
    猜你喜欢
    • 1970-01-01
    • 2011-01-27
    • 1970-01-01
    • 1970-01-01
    • 2015-04-24
    • 2010-11-28
    • 2011-11-15
    • 2022-08-11
    • 2017-11-05
    相关资源
    最近更新 更多