原文 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"
分享到:
相关推荐
对接接口时用到的一种常用加密算法,常用于验证签名,使用shiro-all-1.4.1.jar,可自行下载
输入需要加密的字符串,有两种加密方式,普通md5加密和加盐MD5加密。根据需要生成。
MD5(Message-Digest Algorithm 5)是一种广泛使用的哈希函数,可以将任意长度的输入转化为固定长度的输出,通常用于数据校验和密码存储。然而,由于MD5的碰撞攻击弱点,直接使用MD5来存储密码已经不够安全。为了...
java实现MD5加密解密算法,java源代码~
MD5(Message-Digest Algorithm 5)是一种广泛使用的哈希函数,由计算机科学家Ronald Rivest在1991年设计。它能够将任意长度的数据转换为固定长度的128位(16字节)摘要,通常表示为32个十六进制数字。在C语言中实现...
这个"MD5加密+签名算法Sign生成工具类"是为开发者提供的一种便利,避免了手动编写复杂的加密和签名逻辑。它可能包含以下功能: 1. **MD5加密**:对输入的字符串进行MD5哈希运算,返回32位的MD5值。在登录场景中,...
总结来说,MATLAB实现MD5算法涉及的主要知识点包括:MD5算法的背景和用途,哈希函数的基本概念,MD5算法的四轮循环结构,FF、GG、HH、II四个非线性函数的作用,以及MATLAB中位运算和数组操作的应用。通过学习这个...
MD5(Message-Digest Algorithm 5)是一种广泛使用的哈希函数,由计算机科学家Rivest在1991年设计。它将任意长度的数据转化为一个固定长度的摘要,通常是128位,以16进制表示就是32个字符。MD5的主要应用包括数据...
1. **不可逆性**:MD5是一种单向函数,从MD5值无法轻易恢复原始输入信息。 2. **抗碰撞**:理论上两个不同的输入会产生不同的MD5值,但随着计算能力的提升,已发现MD5存在碰撞问题,即不同输入可能产生相同的MD5值,...
- **位操作**:MD5算法涉及大量的位运算,如位移、与、或、异或等,C51需要使用特定的库函数或汇编指令来完成这些操作。 - **效率优化**:由于8051的CPU速度相对较慢,可能需要对算法进行一些优化,如减少循环次数、...
摘要:VC/C++源码,加密解密,MD...VC++源代码写的用于md5加密算法的一个DLL组件源码,虽然是半成品,不过学习一下VC++中编写DLL也是不错的选择,另外还可以研究MD5加密算法具体实施代码。 运行环境:Windows/Visual C/C++
5. **pbmd5算法**:这里的"pb"可能指的是Protocol Buffers(谷歌的一种数据序列化协议),在Protocol Buffers中集成MD5加密,通常是在序列化或反序列化数据时,先对敏感信息进行MD5加密,再进行编码。这可能涉及到...
1. **MD5算法原理**:MD5算法通过四轮不同的操作(分别是Additive-XOR、Rotational、Additive和Parity)对输入数据进行处理,每轮操作都包含多个步骤,最终得到一个128位的摘要。这个摘要可以视为输入数据的“数字...
VBA MD5加密 算法
在Excel中,MD5(Message-Digest Algorithm 5)是一种常用的哈希函数,它能够将任意长度的数据转化为固定长度的128位(通常用32位十六进制表示)的数字摘要。MD5常用于数据校验和密码存储,因为原始数据的微小改变会...
MD5信息摘要算法(英语:MD5 Message-Digest Algorithm),一种被广泛使用的密码散列函数,可以产生出一个128位(16字节)的散列值(hash value),用于确保信息传输完整一致。MD5由美国密码学家罗纳德·李维斯特...
MD5(Message-Digest Algorithm 5)是一种广泛使用的哈希函数,由计算机科学家Rivest在1991年设计。它将任意长度的数据转化为一个固定长度的128位(16字节)的摘要,通常以32位的十六进制数表示。在C语言中实现MD5...
MD5算法由Ronald Rivest在1991年设计,它的目的是提供一种快速、简单的方法来验证文件或数据的完整性。MD5的过程是不可逆的,即不能通过散列值还原原始数据,因此适用于密码存储,但因存在碰撞问题,不适用于安全性...
MD5(Message-Digest Algorithm 5)是一种广泛使用的哈希函数,由计算机科学家Ronald Rivest在1991年设计。它将任意长度的数据转化为一个固定长度的128位(16字节)的摘要,通常用32个十六进制数字表示。MD5的主要...
2. **初始化向量**:MD5算法开始时使用一组特定的32位常量,称为初始化向量IV,它们作为处理过程的初始状态。 3. **数据预处理**:在计算MD5摘要之前,原始数据需要进行预处理,包括添加填充位以确保数据长度是512...