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

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

相关推荐

    java实现Md5加盐加密算法

    对接接口时用到的一种常用加密算法,常用于验证签名,使用shiro-all-1.4.1.jar,可自行下载

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

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

    java生成md5密码加盐

    MD5(Message-Digest Algorithm 5)是一种广泛使用的哈希函数,可以将任意长度的输入转化为固定长度的输出,通常用于数据校验和密码存储。然而,由于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算法封装DLL MD5算法封装DLL MD5算法封装DLL

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

    MD5加密解密算法demo

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

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

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

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

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

    三种语言md5加密算法

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

    VB6 MD5算法_vb6md5_VB6MD5验签_vb6_VB6MD5算法_

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

    VBA MD5加密算法实现

    VBA MD5加密 算法

    Excel使用的Md5加密宏与使用范例

    在Excel中,MD5(Message-Digest Algorithm 5)是一种常用的哈希函数,它能够将任意长度的数据转化为固定长度的128位(通常用32位十六进制表示)的数字摘要。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...

    PB9.0调用MD5加密示例,md5加密方法过程,PowerBuilder

    MD5算法由Ronald Rivest在1991年设计,它的目的是提供一种快速、简单的方法来验证文件或数据的完整性。MD5的过程是不可逆的,即不能通过散列值还原原始数据,因此适用于密码存储,但因存在碰撞问题,不适用于安全性...

    MD5加密算法程序

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

    MD5算法源码;加密算法

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

Global site tag (gtag.js) - Google Analytics