欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

MD5加密

程序员文章站 2024-03-14 10:35:58
...

1.介绍:

MD5为不可逆散列算法,可用于存储用户密码,存储后不需要永远不需要知道明文。密码比较时只需将用户输入的密码再次转成MD5码与存储的相比较即可得知用户输入密码是否正确。另外,MD5 不可逆的原因是其是一种散列函数,使用的是hash算法,在计算过程中原文的部分信息是丢失了的。 当我们加密了 就无法还原了 只进行对比

2.python使用方法

 #使用hashlib库内的md5
import hashlib 
 #初始化md5
m = hashlib.md5() 
 #对数据进行加密
m.update('123') 
  #获取密文  
m.hexdigest()    

HTML使用方法

需要js文件  使用第三方md5 js文件  bootcdn        
<script src="https://cdn.bootcdn.net/ajax/libs/blueimp-md5/2.18.0/js/md5.js"></script>
使用方式:
<script>
    md5('123')   
</script>

3.加密原理

参数拼接:顺序要统一,得到的加密串 需要把全部字母变成大写

4.拼接加密时应加入共同**才安全

5.MD5在生鲜系统的应用

 # 订单号+价格+**
    key = SECRET_KEY
     # 加密串
    str_md5 = request.POST.get('str_md5')
    # 拼接加密串进行对比
    join_str = order_num + str(total) + key
    # 加密拼接字符
    m = hashlib.md5()
    m.update(join_str.encode('utf-8'))
    str_m = m.hexdigest()
    if str_m.upper() == str_md5.upper():
        # 电脑网站支付,需要跳转到https://openapi.alipay.com/gateway.do? +order_string
        order_string = alipay.api_alipay_trade_page_pay(
            out_trade_no=order_num,  # 订单号
            total_amount=total,  # 金额(字符串)
            subject="水果生鲜系统",
            return_url="http://127.0.0.1:8000/buyer/return_url/",  # 支付宝沙箱填写的回调地址
            notify_url="http://127.0.0.1:8000/buyer/return_url/"  # 可选, 不填则使用默认notify url
        )
        models.Buycar.objects.filter(buyer_id=request.session['buyer_id_session']).delete()
        # 需要跳转到https://openapi.alipay.com/gateway.do? + order_string 进行支付
        # https://openapi.alipaydev.com/gateway.do
        # https://openapi.alipay.com/gateway.do
        print("https://openapi.alipaydev.com/gateway.do?" + order_string)
        msg = {
            'code': 1,
            'msg': 'https://openapi.alipaydev.com/gateway.do?' + order_string
        }
        return HttpResponse(json.dumps(msg))
    else:
        msg = {
            'code': 2,
            'msg': '你不能篡改'
        }
        return HttpResponse(json.dumps(msg))

:无论怎么MD5加密都无法和我们加密串相等。