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

答复: 一种简单的给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"
分享到:
评论

相关推荐

    C#MD5加密--加盐MD5加密C#MD5加密C#MD5加密

    输入需要加密的字符串,有两种加密方式,普通md5加密和加盐MD5加密。根据需要生成。

    java实现MD5加密解密算法

    java实现MD5加密解密算法,java源代码~

    MD5加解密算法C语言

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

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

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

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

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

    MD5加密解密算法demo

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

    MD5_加密算法程序_C51验证可以用

    - **位操作**:MD5算法涉及大量的位运算,如位移、与、或、异或等,C51需要使用特定的库函数或汇编指令来完成这些操作。 - **效率优化**:由于8051的CPU速度相对较慢,可能需要对算法进行一些优化,如减少循环次数、...

    三种语言md5加密算法

    5. **pbmd5算法**:这里的"pb"可能指的是Protocol Buffers(谷歌的一种数据序列化协议),在Protocol Buffers中集成MD5加密,通常是在序列化或反序列化数据时,先对敏感信息进行MD5加密,再进行编码。这可能涉及到...

    VBA MD5加密算法实现

    VBA MD5加密 算法

    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`是苹果的...

    MD5加密算法程序

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

    MD5算法源码;加密算法

    2. **初始化向量**:MD5算法开始时使用一组特定的32位常量,称为初始化向量IV,它们作为处理过程的初始状态。 3. **数据预处理**:在计算MD5摘要之前,原始数据需要进行预处理,包括添加填充位以确保数据长度是512...

    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的主要用途...

    C#Md5加密解密算法

    代码片段还包含了加密解密函数的定义,值得注意的是,这里提到的加密解密实际上仅指数据的加密,而MD5算法本身是无法实现解密的,因为它是一种单向散列算法。这部分代码示例可能混淆了加密与解密的概念,实际应用中...

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

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

    MD5 digest 算法

    2. **初始值**:MD5算法使用四个32位的初始化向量,这些值在算法开始时就已经设定好。 3. **处理**:数据块被分成64个字节大小的部分,每个部分都会经过一系列的位操作、异或操作和加法操作,与初始化向量结合,生成...

    md5算法实例

    在本项目中,"md5算法实例"可能是实现了一个简单的MD5计算功能,用户可以通过输入任何值,程序会返回这个值经过MD5算法处理后的哈希结果。这样的实例通常涉及以下编程知识点: 1. **哈希函数**:理解哈希函数的基本...

Global site tag (gtag.js) - Google Analytics