原文 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加密。根据需要生成。
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中位运算和数组操作的应用。通过学习这个...
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加密,再进行编码。这可能涉及到...
VBA MD5加密 算法
MD5信息摘要算法(英语:MD5 Message-Digest Algorithm),一种被广泛使用的密码散列函数,可以产生出一个128位(16字节)的散列值(hash value),用于确保信息传输完整一致。MD5由美国密码学家罗纳德·李维斯特...
MD5(Message-Digest Algorithm 5)是一种广泛使用的哈希函数,由计算机科学家Rivest在1991年设计。它将任意长度的数据转化为一个固定长度的128位(16字节)的摘要,通常以32位的十六进制数表示。在C语言中实现MD5...
1. 第一个方法`-(NSString *)md5:(NSString *)str`: 这个方法首先将输入的NSString转换为UTF8编码的C字符串(`const char *cStr = [str UTF8String];`),然后调用`CC_MD5`函数计算MD5摘要。`CC_MD5`是苹果的...
MD5(Message-Digest Algorithm 5)是一种广泛使用的哈希函数,由计算机科学家Ronald Rivest在1991年设计。它将任意长度的数据转化为一个固定长度的128位(16字节)的摘要,通常用32个十六进制数字表示。MD5的主要...
2. **初始化向量**:MD5算法开始时使用一组特定的32位常量,称为初始化向量IV,它们作为处理过程的初始状态。 3. **数据预处理**:在计算MD5摘要之前,原始数据需要进行预处理,包括添加填充位以确保数据长度是512...
1. **初始化**:MD5有四个32位的中间变量A、B、C和D,以及一个128位的缓冲区,用于存储数据块。 2. **预处理**:在计算MD5之前,原始数据会被填充到最接近512位的倍数,然后添加一个128位的填充位和64位的表示原始...
MD5(Message-Digest Algorithm 5)是一种广泛使用的哈希函数,由计算机科学家Ronald Rivest在1991年设计。它能够将任意长度的数据转换为固定长度的128位(16字节)摘要,通常表示为32个十六进制数字。MD5的主要用途...
代码片段还包含了加密解密函数的定义,值得注意的是,这里提到的加密解密实际上仅指数据的加密,而MD5算法本身是无法实现解密的,因为它是一种单向散列算法。这部分代码示例可能混淆了加密与解密的概念,实际应用中...
3. **数字签名**:MD5可以作为数字签名的一部分,确保消息的完整性和来源的真实性。 #### 三、Java实现MD5加密示例解析 在给定的代码片段中,我们可以通过以下几个步骤来理解如何在Java中实现MD5加密: 1. **导入...
2. **初始值**:MD5算法使用四个32位的初始化向量,这些值在算法开始时就已经设定好。 3. **处理**:数据块被分成64个字节大小的部分,每个部分都会经过一系列的位操作、异或操作和加法操作,与初始化向量结合,生成...
在本项目中,"md5算法实例"可能是实现了一个简单的MD5计算功能,用户可以通过输入任何值,程序会返回这个值经过MD5算法处理后的哈希结果。这样的实例通常涉及以下编程知识点: 1. **哈希函数**:理解哈希函数的基本...