MD5加密

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加密都无法和我们加密串相等。

上一篇:.NET 5 支持 Azure Functions OpenAPI 扩展啦


下一篇:web服务(openAPI)鉴权的一种实现方法、思路