实现md5加密验证访问接口总结

作者:李祥权

【摘要】

在项目开发中,遇到用户端点登陆接口需要加密验证才可以登陆的情况,当我们需要访问对方的接口时,为了保证访问的安全性,使用python实现md5加密过程

【正文】

1、有某个应用场景为采用xxx.xxx?UserID=&Token=xxx&url=xxxxx与对方接口,其中:

-xxx.xxx:是对方的接口URL

-UserID:比如是当前某一系统的登录名

-Token:通过某种方式加密的访问令版Token(下有详述)

-url:端点登录成功后需要转向的网址,若没有,则由对方直接转到相关首页

2、Token说明:

采用32位ToMd5(UserId + PublicKey +某种特别定义的日期格式),myToken = ToMd5(UserID + PublicKey + YYYYMMDD),md5的加密实现为:当我们要访问对方某一url的时候需要匹配md5加密结果与Token值是否一致来实现,比如Token值也是对方通过md5加密的一个值,那么双方通过协商对UserId、PublicKey、日期来进行md5加密,如果加密结果即myToken与给我们的Token值一样,即匹配正确,则进行下一步验证

3、对方验证方法和步骤:

(1)第一步:取Request.ServerVariables(“HTTP_REFERER”)是否来自某一特定系统的网址,具体以互相协商的网址为定义。若是相关网址,则进入第二部,否则端点登陆不成功。

(2)第二部:取传递的UserID值,和Token值。同时进行计算内部Token值,若计算的内部Token值与传递的Token值不一样,端点登录失败,否则转向第三步。

(3)第三步:取url值,若为空,则直接转向首页,否真转向相关URL。

4、python实现的代码如下:

# -*- coding: utf-8 -*-

import hashlib

from django.http import JsonResponse

from datetime import date

# md5加密接口

def to_md5(s):

md5 = hashlib.md5()

md5.update(s)

return md5.hexdigest()

def api_md5test(request):

try:

publib_key = 'sakds3297549017234095723905170950' # 此值由双方协商

date_formate = '%Y%m%d' # 双方协定

user_id = request.GET.get('UserID')

refer_url = ['http://oa.ebscn.com/api/gouc.asp',

'http://10.88.2.94/api/gouc.asp',

'http://10.88.2.91/api/gouc.asp']

token = request.GET.get('Token')

url = request.GET.get('url')

# 获REFERER,告诉服务器我是从哪个页面链接过来的

Refer = request.environ.get('HTTP_REFERER')

b = False

for item in refer_url:

if item == Refer:

b = True

break

if not b:

return JsonResponse({

'result': False,

'message': 'HTTP_REFERER不是来自相关网址',

'data': None

})

mytoken = to_md5(user_id + publib_key +

date.today().strftime(date_formate))

if mytoken != token:

return JsonResponse({

'result': False,

'message': 'Token值不匹配',

'data': None})

if url == '':

url = 'https://xxx.xxx.xxx' # 系统首页网址

return JsonResponse({'result': True, 'data': url})

except Exception as e:

return JsonResponse({

'result': False,

'message': repr(e),

'data': None

})

python实现md5加密_Python实现md5加密验证访问接口总结相关推荐

  1. python中字符串索引_Python字符串的索引与访问字符串中的字符

    字符串是Python中一种非常重要的数据类型.Python字符串是字符的集合,是由单引号.双引号或三引号包裹起来的若干字符的序列.Python字符串中的每个字符使用ASCII或Unicode字符编码, ...

  2. python md5函数_python实现md5加密

    Python中实现MD5加密是通过hashlib完成的.在演示之前,我们先创建一段文本作为加密数据.如下所示: hashlib_data.py #--encoding='utf-8'-- import ...

  3. python程序加密_Python简单的加密程序:如何循环Z回到A

    我会推荐使用模数运算符来做你想要的.在python中是%字符.在模数学中. X%Y告诉我们X/Y的剩余部分是什么.例如. 27%26是1.使用这个你可以得到你想要的包装.这里是一个代码示例位,如果我们 ...

  4. python增量更新数据_Python标准库——加密

    增量更新 散列计算器的update()方法可以反复调用.每次调用时,都会根据提供的附加文本更新摘要.增量更新比将整个文件读入内存更高效,而且能生成相同的效果. 新建hashlib_update.py文 ...

  5. python发送excel文件_Python操作Excel, 开发和调用接口,发送邮件

    接口开发: importflaskimporttoolsimportjson,redisimportrandom server= flask.Flask(__name__)#新建一个服务,把当前这个p ...

  6. python 模拟浏览器操作_python 使用 mechanize 模拟浏览器访问网页

    知道如何快速在命令行或者python脚本中实例化一个浏览器通常是非常有用的. 每次我需要做任何关于web的自动任务时,我都使用这段python代码去模拟一个浏览器. import mechanize ...

  7. python md5加密_Python MD5加密实例详解

    详解Python MD5加密 Python 3下MD5加密 # 由于MD5模块在python3中被移除 # 在python3中使用hashlib模块进行md5操作 import hashlib # 待 ...

  8. python md5加密解密_Python使用MD5加密算法对字符串进行加密操作示例

    本文实例讲述了Python使用MD5加密算法对字符串进行加密操作.分享给大家供大家参考,具体如下: # encoding: utf-8 from __future__ import division ...

  9. python实现md5加密和解密_Python中的加密和解密

    1.base64 Python内置的base64模块可以实现base64.base32.base16.base85.urlsafe_base64的编码解码,python 3.x通常输入输出都是二进制形 ...

最新文章

  1. mysql的repeat()函数
  2. WinForm资源文件使用
  3. 《从零开始学Swift》学习笔记(Day 6)——哎呀常量和变量都该什么时候用啊?...
  4. 怎么检测计算机硬件好坏,驱动人生怎么看电脑硬件 硬件检测教程介绍
  5. android 清除所有计时器,android-如何从onTick方法中清除CountDownTimer?
  6. 类数组的push方法
  7. some tools
  8. chpater 2 : InnoDB存储引擎
  9. 数据库系统概论 思维导图
  10. 数据库SQL Server 基础知识思维导图
  11. FIR 带通滤波器参数设计流程
  12. php验证qq,正则表达式验证qq号码是否输入正确
  13. 【面试】Java 并发编程
  14. 1525C - Robot Collisions
  15. 数据库SQL实战 --42.将id=5以及emp_no=10001的行数据替换成id=5以及emp_no=10005
  16. Facebook开源的数据Mock:Memisis详解
  17. CCNA(十五)思科ACL、NAT配置命令
  18. linux 设置u盘为只读模式,U盘如何设置为只读模式
  19. 【节目单】科幻春晚,陪你过年!
  20. 物理引擎学习06-碰撞反馈

热门文章

  1. 拋棄虛擬機,微軟實驗讓我們在線做(二)
  2. 短期主义和长期主义的思考
  3. CentOS7.4安装PyQt5.6
  4. Linux定时任务案例
  5. react-native 安卓支持 gif动态图
  6. ajax请求锁屏功能
  7. P1133 教主的花园
  8. centos 6 KVM 网卡桥接配置
  9. Linux关闭防火墙、SELinux
  10. homebrew可以管理众多开源软件的安装和卸载