当前位置: 首页 > news >正文

杭州网站建设V芯ee8888e精准客源

杭州网站建设V芯ee8888e,精准客源,做网站合肥哪家公司好,网站建设前准备看视频讲的更详细:https://www.bilibili.com/video/BV1zr4y1E7V5/? 一、对称加密 对称加密算法是共享密钥加密算法,在加密解密过程中,使用的密钥只有一个。发送和接收双方事先都知道加密的密钥,均使用这个密钥对数据进行加密和解…

看视频讲的更详细:https://www.bilibili.com/video/BV1zr4y1E7V5/?

一、对称加密

对称加密算法是共享密钥加密算法,在加密解密过程中,使用的密钥只有一个。发送和接收双方事先都知道加密的密钥,均使用这个密钥对数据进行加密和解密。

数据加密:在对称加密算法中,数据发送方将明文 (原始数据) 和 加密密钥一起经过加密处理,生成复杂的密文进行发送。

数据解密:数据接收方收到密文后,使用加密的密钥及相同算法的逆算法对加密的密文进行解密,将使其恢复成可读明文。

二、非对称加密

非对称加密算法,有两个密钥,一个称为公开密钥 (publickey),另一个称为 私有密钥 (private key),加密和解密使用的是两个不同的密钥,所以这种算法称为非对称加密算法。

如果使用公钥对数据进行加密,只有用对应的私钥才能进行解密。

如果使用私钥对数据进行加密,只有用对应的公钥才能进行解密。

三、常见加密处理方式

根据上述常见的加密算法,测试人员在测试不同的加密接口可采用下述的方法处理加密接口

摘要算法(MD5.SHA1 ):造接口数据前调用MD5,SHA1进行编码,服务端对比编码后的字符串是否一致

对称加密算法(AES,DES ):造接口数据前从开发获取对称公钥,基于对称公钥可以加密请求数据,解密响应报文

非对称加密算法(RSA):造接口数据前从开发获取公钥私钥去加密解密接口数据

用户认证:一般的接口测试工具都会提供一个User Auth/Authorization的选项

1、OAuth 2.0认证

在对应的工具上,你可以选取对应的用户认证选项,如果用Python如何实现用户认证。

  • 首先安装Requests库,Requests库的get()和post()方法均提供有auth参数,用于设置用户签名。
  • 假定我们有一个接口为添加一个新的公告,接口需要认证:auth=("username","password"),nid 或 name两个参数二选一
  • 伪代码:

highlighter- ruby

def test_get_notice_list_nid_sucess(self):auth_user = ('admin' , 'admin123456')r = requests.get(self.base_url, auth = auth_user, params = {'nid' : 1})result = r.json()self.assertEqual(result['status'], 200)

2、数字签名

在使用 HTTP/SOAP 协议传输数据的时候,签名作为其中一个参数,可以起到关键作用:

先来一个简单的,通过客户的密钥,服务端的密钥匹配;

这个很有好理解,例如一个接口传参为:

highlighter- awk

http://127.0.0.1:8000/api/?a=1&b=2

假设签名的密钥为:@signpassword

加上签名之后的接口参数为:

highlighter- awk

http://127.0.0.1:8000/sign/?a=1&b=2&sign=@signpassword

但是,这样的sign 参数明文传输是不安全的,一般会选择一些加密算法,比如MD5 算法(MD5算法是不可逆向的),比如MD5代码如下:

highlighter- stylus

import hashlib  
md5 = hashlib.md5()
sign_str = "@signpassword"
sign_bytes_utf8 = sign_str.encode()
md5.update(sign_bytes_utf8)
sign_md5 = md5.hexdigest()
print(sign_md5)

执行后得到:6648e929329e53e7a91c50ae685a88b5

此时带签名的接口为:

highlighter- apache

http://127.0.0.1:8000/sign/?a=1&b=2&sign=6648e929329e53e7a91c50ae685a88b5

所以,当服务器接收到请求后,同样需要对“signpassword”进行 MD5 加密,然后,比对与调用者传来的 sign 加密串是否一致,从而来鉴别调用者是否有权限使用该接口。

接着,我们来理解一个复杂一点的:把sign参数传递为api key(申请获取)+ timestramp(时间戳)同样需要用代码来实现,原理和上面这个一致的。(伪代码)

highlighter- ruby

def setUp(self):   self.base_url = "http://127.0.0.1:8000/api/sec_add_notice/"# app_keyself.api_key = "&APIkey"# 当前时间now_time = time()self.client_time = str(now_time).split('.')[0]# signmd5 = hashlib.md5()sign_str = self.client_time + self.api_keysign_bytes_utf8 = sign_str.encode(encoding="utf-8")md5.update(sign_bytes_utf8)self.sign_md5 = md5.hexdigest()

3、AES加解密的过程

通常接口会使用更复杂一点的方式来进行加密的操作,常见的是AES的使用,放一张图让大家感受一下AES加解密的过程:

Python里面有一个很好的黑魔法,叫PyCrypto库,支持常见的 DES、AES 加密以及 MD5、SHA 各种 HASH 运算。

官方网站下载最新版本:

highlighter- awk

https://www.dlitz.net/software/pycrypto/

另外,也可以在 PyPi 仓库中下载安装:

highlighter- awk

https://pypi.python.org/pypi/pycrypto

对于AES的加密来说,看一下用了PyCrypto库的结果

加密:

highlighter- stylus

from Crypto.Cipher import AES
obj = AES.new('This is a key123', AES.MODE_CBC, 'This is an IV456')
message = "The answer is no"
ciphertext = obj.encrypt(message)
print(ciphertext)

程序运行后的结果为:

highlighter- taggerscript

b'\xd6\x83\x8dd!VT\x92\xaa`A\x05\xe0\x9b\x8b\xf1'

AES加密里面有两个关键,一个是key(必须为16,24,32位),一个是VI(必须为16位)

解密:解谜者必须要同时知道key和VI才可以解密

highlighter- stylus

obj2 = AES.new('This is a key123', AES.MODE_CBC, 'This is an IV456')
s = obj2.decrypt(ciphertext)
print(s)

由Crypto库的作者已停止维护,现推荐安装:

highlighter- cmake

 pip install pycrytodome

pycryptodome官方文档:

highlighter- awk

https://www.pycryptodome.org/en/latest/

写在最后

如果你觉得文章还不错,请大家 点赞、分享、留言 下,因为这将是我持续输出更多优质文章的最强动力!

看到这篇文章的人有觉得我的理解有误的地方,也欢迎评论和探讨~

你也可以加入下方的的群聊去和同行大神交流切磋

 

http://www.hrbkazy.com/news/33832.html

相关文章:

  • 如何做网站的内容云搜索引擎
  • 短信轰炸网站开发怎么优化网络
  • 成都网站制作荆门网站seo
  • 网站空间免费吗做竞价推广大概多少钱
  • 网站后台如何修改文字网站建设制作模板
  • 做影视类短视频的资源网站网络推广公司主要做什么
  • 网站开发实验室建设方案他达拉非的副作用和危害
  • 网站建设作业搜索引擎优化要考虑哪些方面?
  • 沈阳建设工程信息网官网 安全中项网厦门seo厦门起梦
  • 响应式网站框架足球比赛今日最新推荐
  • 给政府做网站怎么报价百度推广竞价
  • 免费做网站用什么软件国外b站不收费免费2023
  • 央视新闻最新消息今天seo资讯
  • php做网站 价格临沂seo代理商
  • 网站公安备案号合肥优化推广公司
  • facebook海外营销百度关键词优化软件网站
  • 免费建网站软件下载精准营销包括哪几个方面
  • 做谷歌网站使用什么统计代码吗抖音seo搜索优化
  • wordpress换域名后缩略图不显示seo专业论坛
  • wordpress 不连接外网河北百度推广seo
  • 做的网站.如何在局域网内访问湘潭网页设计
  • 开展网络营销的企业网站有哪些网络营销有哪些例子
  • 教育网站开发文档网站推广线上推广
  • 做网站一般图片多大济南百度快照推广公司
  • 做数字艺术设计的网站seo查询爱站
  • 企业官网建设费用深圳搜索引擎优化推广便宜
  • 个人做网站赚钱免费网站推广网站在线
  • 西安英文网站建设营销组合策略
  • 重庆平台网站建设设计sem优化托管
  • 做a小视频网站seo视频教程汇总