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

本文介绍了一种利用Python编程实现复杂密码生成及验证的方法,包括使用MD5哈希算法并结合随机数生成盐值,确保密码安全性和唯一性。通过实例演示了密码生成过程,并提供了一个验证函数来检查生成的密码是否正确。
摘要由CSDN通过智能技术生成
原文 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"
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值