zoukankan      html  css  js  c++  java
  • python 中md5 和 sha1 加密, md5 + os.urandom 生成全局唯一ID

    首先先来介绍一下md5 和 sha1 的概念

    MD5

    MD5的全称是Message-Digest Algorithm 5(信息-摘要算法)。128位长度。目前MD5是一种不可逆算法。

    具有很高的安全性。它对应任何字符串都可以加密成一段唯一的固定长度的代码。

    SHA1

    SHA1的全称是Secure Hash Algorithm(安全哈希算法) 。SHA1基于MD5,加密后的数据长度更长,

    它对长度小于264的输入,产生长度为160bit的散列值。比MD5多32位。

    因此,比MD5更加安全,但SHA1的运算速度就比MD5要慢了。

    python 中使用md5 和 sha1

    python 的内置模块hashlib 中自带了 md5, sha1 所以在python 使用这两种加密还是非常方便的。

    md5 使用例子:

    1 from hashlib import md5
    2 data_str = "hello world"
    3 hash_md5 = md5(data_str).hexdigest()
    4 print hash_md5

    结果为:5eb63bbbe01eeed093cb22bb8f5acdc3

    sha1 使用例子:

    1 from hashlib import sha1
    2 data_str = "hello world"
    3 hash_sha1 = sha1(data_str).hexdigest()
    4 print hash_sha1
    结果为:2aae6c35c94fcfb415dbe95f408b9ce91ee846ed

    可以看到的是,相同的字符串,加密后sha1的结果要比md5的结果在长度上要长一些。形同字符串,相同加密算法产生的加密串是相同的。

    他们不仅可以用来加密字符串使用,往往还可以用来当做文件名,当做key value 格式存储的key,运行任务产生的instance id 等。

    使用md5 + os.urandom(n) 产生随机字符串

    有点时候我们会需要产生一个全局唯一的id,这个时候,md5 + os.urandom 就派上用场了。

    os.urandom(n) 是一种随机生成n个字节字符串的方法,而且每次生成的值都不相同。再加上md5的处理,就能够成内容不同长度相同的字符串了。

    例子:

    import os
    from hashlib import md5
    
    for i in range(10):
        print md5(os.urandom(24)).hexdigest()
    
    输出结果:
    
    3c0919ae5c84adc230a7adbb90446913
    569c086e2f8badaf64065978ccb58482
    3fa55d4a2a0de854bac9d33c730b7424
    91b4a5029980a8166e305fe7d785b5d7
    b251e79ec54c7f0320bb41320b8c6033
    79c78471e6d87ba7dc11cb40618b2cf8
    c14a40bb41e2ce4311d27b1add3af843
    148340f61bd2193fa9fa1151f7ba7159
    f3d2084ee4df18e6ad03a13ac6857f47
    2f027d38265ec0576edb0c1d24eb6f68
  • 相关阅读:
    敏捷开发(五)- 框架SCRUM内容
    敏捷开发(四)- 故事验收测试
    敏捷开发(三)- 估算故事
    敏捷开发(二)- 编写故事
    敏捷开发(一)- 搜集故事
    项目管理(十)- 开发准备列表
    项目管理(九)- 组织项目资源
    web 前端常用组件【04】Datetimepicker 和 Lodop
    让时间处理简单化 【第三方扩展类库org.apache.commons.lang.time】
    Word 打包 zip 并提供下载
  • 原文地址:https://www.cnblogs.com/shanys/p/5890265.html
Copyright © 2011-2022 走看看