iOS 和服务端交互 数据加密策略
总体逻辑:
客户端:对称加密数据,上传。。。回执对称解密
同理服务端:获取上传数据 对称解密 。。。下发:对称加密
当且仅当登录接口和 拉新(更新nonce 和 key的接口)是对称加密上传 非对称解密
1.加密库选择 : Libsodium
2.加密对象:
(1)整体:这个我们最后放弃了,因为如果整体加密,服务端大多数情况会回执本地无法解开的数据,客户端不能按需处理逻辑了,僵死的逻辑处境
(2)局部:只加密data部分,这样随时根据回执信息按需处理
{code:0
data: {XXX}
message:success
}
3.加密方式:
重中之重,先 生成密钥对:
执行方法crypto_box_keypair,生成密钥对(pk,sk)
3.1 未登录前http请求需要:(eg 发送验证码、请求国际码集合等)
对称加密:
客户端参数:
(1)前提:请求头必有参数
VERSION:客户端版本号 md5处理
(2)密码学必要参数 nonce: (1) 中截取md5[0,24)
key: (1)中截取[0,32)
(3) 加密对象:最终转为data形式
(4)执行加密传输:
方法:crypto_secretbox_easy
同理:服务端解密需要用 成对方法解密:crypto_secretbox_open_easy
(5)服务端回执:客户端对称解密(服务端发送是对称加密)
3.2 登录操作:
(1) “3.1” 对称加密形式发起登录请求
(2) 上传加密的内容包括 本地生成的pk.
iOS 和服务端交互 数据加密策略的更多相关文章
- IOS开发系列之阿堂教程:玩转IPhone客户端和Web服务端交互(客户端)实践
说到ios的应用开发,我们不能不提到web server服务端,如果没有服务端的支持,ios应用开发就没有多大意义了,因为从事过手机开发的朋友都知道(Android也一样),大量复杂业务的处理和数据库 ...
- java客户端与服务端交互通用处理 框架解析
一.综述 java 客户端与服务端交互过程中,采用NIO通讯是异步的,客户端基本采用同一处理范式,来进行同异步的调用处理. 处理模型有以下几个要素: 1. NIO发送消息后返回的Future 2. 每 ...
- Android客户端与服务端交互之登陆示例
Android客户端与服务端交互之登陆示例 今天了解了一下android客户端与服务端是怎样交互的,发现其实跟web有点类似吧,然后网上找了大神的登陆示例,是基于IntentService的 1.后台 ...
- c++ 网络编程(一)TCP/UDP windows/linux 下入门级socket通信 客户端与服务端交互代码
原文作者:aircraft 原文地址:https://www.cnblogs.com/DOMLX/p/9601511.html c++ 网络编程(一)TCP/UDP 入门级客户端与服务端交互代码 网 ...
- Fresco 源码分析(二) Fresco客户端与服务端交互(1) 解决遗留的Q1问题
4.2 Fresco客户端与服务端的交互(一) 解决Q1问题 从这篇博客开始,我们开始讨论客户端与服务端是如何交互的,这个交互的入口,我们从Q1问题入手(博客按照这样的问题入手,是因为当时我也是从这里 ...
- Android客户端与PHP服务端交互(一)---框架概述
背景 作为一个普通上班族,总是想做一些自认为有意义的事情,于是乎准备成立一个工作室,尽管目前正在筹备阶段,但是之前有些朋友提出一些需求的时候,我发现自己的能力还是有限,直到最近和一些技术牛朋友聊起这事 ...
- Fresco 源码分析(二) Fresco客户端与服务端交互(3) 前后台打通
4.2.1.2.4 PipelineDraweeControllerBuilder.obtainController()源码分析 续 上节中我们提到两个核心的步骤 obtainDataSourceSu ...
- cas sso单点登录系列2:cas客户端和cas服务端交互原理动画图解,cas协议终极分析
转:http://blog.csdn.net/ae6623/article/details/8848107 1)PPT流程图:ppt下载:http://pan.baidu.com/s/1o7KIlom ...
- KnockoutJS-与服务端交互
几乎所有Web应用程序都要和服务器端交换数据,交换数据时最方便的就是使用JSON格式.Knockout可以实现很复杂的客户端交互,对于前后端交互使用的技术最为基本且常用的是Ajax,本次利用Ajax和 ...
随机推荐
- python笔记4 - 函数
函数是组织好的,可重复使用的,用来实现单一,或相关联功能的代码段. 函数能提高应用的模块性,和代码的重复利用率.你已经知道Python提供了许多内建函数,比如print().但你也可以自己创建函数,这 ...
- 【BZOJ】3410: [Usaco2009 Dec]Selfish Grazing 自私的食草者(贪心)
http://www.lydsy.com/JudgeOnline/problem.php?id=3410 太神了.... 按末端点排序然后贪心取即可. QAQ #include <cstdio& ...
- datagrid使用要点
table自适应: (fit:true(设置table)) 列自动撑开:fitColumns: true,注意给列的width属性赋值
- Accept-Encoding 使用
[总结] 想要获得正确网页内容,而非乱码的话,就有两种方式了: 1.不要设置Accept-Encoding的Header //req.Headers.Add("Accept-Encoding ...
- PHP第三方登录
参考视屏:http://www.imooc.com/learn/596 php第三方登录-QQ登录OAuth协议基本原理QQ登录前置条件以及开放平台账号申请1,一个QQ号2,一个公网通过域名可访问的w ...
- http协议详解(1)
HTTP协议报文格式 接下来我们看看HTTP协议(Hypertext Transfer Protocol――超文本传输协议)浏览器端(客户端)向WEB服务器端访问页面的过程和HTTP协议报文的格式. ...
- screen命令在freebsd安装和使用
安装 # cd /usr/ports/sysutils/screen # make install clean 使用 # screen //以下^A表示同按“Ctrl + A”键 # ^A c //C ...
- apk获取源码(dex2jar、jd-gui)
1.下载dex2jar.zip,并解压文件 2.下载jd-gui.zip,解压文件 3.解压apk文件,找到其中的classes.dex 4.将classes.dex复制到dex2jar.bat所在目 ...
- instanceof和isInstance(Object obj) 和isAssignableFrom(Class cls)的区别和联系
instanceof和isInstance(Object obj) 和isAssignableFrom(Class cls)的区别和联系 编程的时候可能会遇到一个不知道它属于哪个类的 ...
- 巨蟒python全栈开发-第6天 is&==
1.小数据池 2.id 3.decode和encode 小数据池 #小数据池:不要死磕就行#python为了简化,搞出来的一个东西 ID (1)# id()函数可以帮我们查看一个变量的内存地址# a= ...