`
doublefloat
  • 浏览: 4053 次
社区版块
存档分类
最新评论

答复: 一种简单的给MD5加盐算法

阅读更多
原文 http://www.iteye.com/topic/1127277
python实现
#!/usr/bin/env python
#coding:utf-8

import random
import hashlib

DIGEST_LEN = 16

def generate(password):
    salt = '%0*d%0*d' % (8, random.randint(0, 99999999), 8, random.randint(0, 99999999))
    password = hashlib.md5(str(password)+salt).hexdigest()
    cs = [] # size 48
    for i in range(DIGEST_LEN):
        cs.append(password[i*2])
        cs.append(salt[i])
        cs.append(password[i*2+1])

    return "".join(cs)

def verify(password, md5):
    salt = []
    md5_password = []
    for i in range(DIGEST_LEN):
        salt.append(md5[i * 3 + 1])
        md5_password.append(md5[i * 3])
        md5_password.append(md5[i * 3 + 2])

    return hashlib.md5(str(password) + "".join(salt)).hexdigest() == "".join(md5_password)

if __name__ == '__main__':
    password = generate("123456")
    print verify("123456", password) # print "True"
分享到:
评论

相关推荐

    MD5加密实例(加盐)

    在压缩包中的"MD5的实例(加盐)"文件,很可能是包含了一个具体的编程实现,例如用Python、Java或其他语言实现的MD5加盐过程的代码示例。这些示例通常会展示如何生成盐、如何拼接原始数据和盐、如何进行MD5哈希以及...

    MD5加密+签名算法Sign生成 工具类

    这个"MD5加密+签名算法Sign生成工具类"是为开发者提供的一种便利,避免了手动编写复杂的加密和签名逻辑。它可能包含以下功能: 1. **MD5加密**:对输入的字符串进行MD5哈希运算,返回32位的MD5值。在登录场景中,...

    matlab实现md5算法,md5算法详解,matlab

    总结来说,MATLAB实现MD5算法涉及的主要知识点包括:MD5算法的背景和用途,哈希函数的基本概念,MD5算法的四轮循环结构,FF、GG、HH、II四个非线性函数的作用,以及MATLAB中位运算和数组操作的应用。通过学习这个...

    MD5加解密算法的整个C++工程

    - **哈希函数**:MD5是一种非对称哈希函数,它将任意长度的输入(也叫做预映射)通过一系列数学运算转化为固定长度的输出,这个输出就是哈希值,通常是一个128位的二进制数。 - **MD5过程**:MD5算法分为四个步骤...

    js 实现 md5 加密

    javascript 实现 md5 加密。

    MD5加密解密算法demo

    1. **不可逆性**:MD5是一种单向函数,从MD5值无法轻易恢复原始输入信息。 2. **抗碰撞**:理论上两个不同的输入会产生不同的MD5值,但随着计算能力的提升,已发现MD5存在碰撞问题,即不同输入可能产生相同的MD5值,...

    MD5算法封装DLL MD5算法封装DLL MD5算法封装DLL

    MD5(Message-Digest Algorithm 5)是一种广泛使用的哈希函数,由计算机科学家Rivest在1991年设计。它将任意长度的数据转化为一个固定长度的摘要,通常是128位,以16进制表示就是32个字符。MD5的主要应用包括数据...

    VC/C++源码,加密解密,MD5,加密算法

    摘要:VC/C++源码,加密解密,MD...VC++源代码写的用于md5加密算法的一个DLL组件源码,虽然是半成品,不过学习一下VC++中编写DLL也是不错的选择,另外还可以研究MD5加密算法具体实施代码。 运行环境:Windows/Visual C/C++

    md5加密算法 C语言(经过测试验证完整版)

    MD5信息摘要算法(英语:MD5 Message-Digest Algorithm),一种被广泛使用的密码散列函数,可以产生出一个128位(16字节)的散列值(hash value),用于确保信息传输完整一致。MD5由美国密码学家罗纳德·李维斯特...

    C语言MD5算法STM32单片机亲测可用

    MD5(Message-Digest Algorithm 5)是一种广泛使用的哈希函数,由计算机科学家Rivest在1991年设计。它将任意长度的数据转化为一个固定长度的128位(16字节)的摘要,通常以32位的十六进制数表示。在C语言中实现MD5...

    加密md5算法

    1. 第一个方法`-(NSString *)md5:(NSString *)str`: 这个方法首先将输入的NSString转换为UTF8编码的C字符串(`const char *cStr = [str UTF8String];`),然后调用`CC_MD5`函数计算MD5摘要。`CC_MD5`是苹果的...

    主题:用JAVA类实现MD5加密-----MakeMD5.java

    1. **安全性**:MD5算法因其已知的安全漏洞,在某些场景下可能不再被视为足够安全。对于高度敏感的数据或密码,推荐使用更强的哈希函数如SHA-256或bcrypt。 2. **编码问题**:代码中的`getBytes("GB2312")`指定使用...

    MD5加密算法程序

    MD5(Message-Digest Algorithm 5)是一种广泛使用的哈希函数,由计算机科学家Ronald Rivest在1991年设计。它将任意长度的数据转化为一个固定长度的128位(16字节)的摘要,通常用32个十六进制数字表示。MD5的主要...

    labview基于MD5/HMAC等加密算法

    HMAC,另一方面,是一种使用密钥和单向散列函数(如MD5)生成的消息认证码。它结合了密钥和消息,确保了即使消息被篡改,接收方也能检测到异常。在LabVIEW中,实现HMAC通常需要使用特定的加密库或API,这可能涉及到...

    原创:可指定加密次数,经简单变异后的MD5加密算法。

    可指定加密次数,经简单变异后的MD5加密算法。 '作用:更加安全,cmd5.com这样的网站破解不了。 '原理:置换了网上流传的md5加密算法的最后组合时候的顺序,可指定次数多次加密。确保了安全。 '使用方法:miwen=...

    VB6 MD5算法_vb6md5_VB6MD5验签_vb6_VB6MD5算法_

    1. **MD5算法原理**:MD5算法通过四轮不同的操作(分别是Additive-XOR、Rotational、Additive和Parity)对输入数据进行处理,每轮操作都包含多个步骤,最终得到一个128位的摘要。这个摘要可以视为输入数据的“数字...

    MD5算法代码

    1. **初始化**:MD5有四个32位的中间变量A、B、C和D,以及一个128位的缓冲区,用于存储数据块。 2. **预处理**:在计算MD5之前,原始数据会被填充到最接近512位的倍数,然后添加一个128位的填充位和64位的表示原始...

    MD5算法BCB模块

    MD5(Message-Digest Algorithm 5)是一种广泛使用的哈希函数,由计算机科学家Ronald Rivest在1991年设计。它能够将任意长度的数据转换为固定长度的128位(16字节)摘要,通常表示为32个十六进制数字。MD5的主要用途...

    MD5 加密算法 C++实现源码

    MD5(Message-Digest Algorithm 5)是一种广泛使用的哈希函数,由计算机科学家Ronald Rivest在1991年设计。它能够将任意长度的数据转换为固定长度的128位(16字节)的摘要,通常以32个十六进制数字的形式表示。MD5的...

    md5中使用MD5加密算法进行加密

    3. **数字签名**:MD5可以作为数字签名的一部分,确保消息的完整性和来源的真实性。 #### 三、Java实现MD5加密示例解析 在给定的代码片段中,我们可以通过以下几个步骤来理解如何在Java中实现MD5加密: 1. **导入...

Global site tag (gtag.js) - Google Analytics