17.app后端如何保证通讯安全--aes对称加密
在上文《16.app后端如何保证通讯安全--url签名》提到,url签名有两个缺点,这两个缺点,如果使用对称加密方法的话,则完全可以避免这两个缺点。在本文中,会介绍对称加密的具体原理,和详细的方案,使app通讯更加安全。
1.对称加密的原理
采用单钥密码系统的加密方法,同一个密钥可以同时用作信息的加密和解密,这种加密方法称为对称加密,也称为单密钥加密。
其实很简单,假设有原始数据"1000", 把1000加5就得到密文"1005",得到密文"1005"后减5就得到原始数据"1000"。把原始数据加5就是加密算法,把密文减5就是解密算法,密钥就是5。
本文所用的是AES这种通用的对称加密算法。
2. api请求中AES算法的应用
(1)curl简介
在下面的例子中,会使用curl工具,先简单介绍一下。
curl是利用URL语法在命令行方式下工作的开源文件传输工具。
用到的参数:
-X: 指定什么命令,例如post,get等。
-H: 指定http header。
-d: 制定http body的内容
(2)怎么保证token在初次返回时的安全
用下面的api返回加密的token
curl -X POST \
-H "Token-Param:<时间戳>,<sdkversion>"\
-d ‘Base64Encode(AES(token, secretKey))’
https://test.com/api/login
注意:Token-Param是自己定义的http header,这里是因为个人习惯才命名为Token-Param
secretKey就是密钥,使用http header中的Token-Param中的16位长度。
服务端返回时加密token的方法是用AES加密,密钥是secretKey。
客户端解密token的方法是用AES解密,密钥是secretKey。
(3) api请求中的加密
假设更新用户数据的api调用如下
curl -X POST \
-H "Token-Param:<时间戳>,<sdkversion>"\
-H ‘Token:Base64Encode(AES(token, secretKey))’
-d ‘Base64Encode(AES(date, token))’
https://test.com/api/user/update
secretKey使用http header中的Token-Param中的16位长度。
在上面的例子中,data是实际要post的数据。
在这个过程中,token和post的数据都得到了加密保护。
客户端发送时加密的过程
(1)取http header中的Token-Param中的16位长度作为密钥,用AES加密token。
(2)用token作为密钥,用AES加密data。
服务端接收到这个api请求的解密过程:
(1)取http header中的Token-Param中的16位长度作为密钥,用AES解密, 得到token。
(2)用token作为密钥,用AES解密http body的内容,得到原文。
3.对称加密方法的总结
把token返回的时候,可以做个约定,在返回的时候截取某个字符串的一部分作为密钥,这个秘钥只用一次,就是用来解密token的,以后就只是用token来做秘钥了。
整个过程如下:
1、用户名密码 + https + url签名(url+时间戳+随机字串)链接+请求时间+保唯一的字串
2、服务器返回token:aes(约定算法)=》(token+随机secret(就取上面那个签名中的16位))
3、app保存token后,以后每次机通信都通过 aes (token + 内容) 传输
---------------------------------------------------------------------------------------------------------------------------
打开链接 app后端系列文章总目录 总目录 ,能查看本人发表过的所有原创“app后端”文章。
【作者】曾健生
【QQ】190678908
【app后端qq群】254659220
【微信公众号】 appbackend
【新浪微博】 @newjueqi
【博客】http://blog.csdn.net/newjueqi
版权声明:本文为博主原创文章,未经博主允许不得转载。
17.app后端如何保证通讯安全--aes对称加密的更多相关文章
- 16.app后端如何保证通讯安全--url签名
app和后端的通讯过程中,api请求有可能被别人截取或不小心泄露.那么,怎么保证api请求的安全呢?在这篇文章中,介绍一种常见的保证api请求安全的做法--url签名. 1. url签名详解 在前一篇 ...
- 正确使用AES对称加密
正确使用AES对称加密 经常我看到项目中有人使用了对称加密算法,用来加密客户或项目传输中的部分数据.但我注意到开发 人员由于不熟悉原理,或者简单复制网上的代码示例,有导致代码存在安全风险. 我经常遇到 ...
- AES对称加密和解密
package demo.security; import java.io.IOException; import java.io.UnsupportedEncodingException; impo ...
- AES对称加密
import javax.crypto.Cipher; import javax.crypto.spec.IvParameterSpec; import javax.crypto.spec.Secre ...
- java的AES对称加密和解密,有偏移量
import java.math.BigDecimal; import javax.crypto.Cipher; import javax.crypto.spec.IvParameterSpec; i ...
- AES对称加密和解密(转)
AES对称加密和解密 package demo.security; import java.io.IOException; import java.io.UnsupportedEncodingExce ...
- JAVA中AES对称加密和解密
AES对称加密和解密 package demo.security; import java.io.IOException; import java.io.UnsupportedEncodingExce ...
- AES对称加密解密类
import java.io.UnsupportedEncodingException; import javax.crypto.Cipher; import javax.crypto.spec.Se ...
- app后端设计(4)-- 通讯的安全性
在app的后台设计中,一个很重要的因素是考虑通讯的安全性. 因此,我们需要考虑的要点有: 1. 在app和后台,都不能保存任何用户密码的明文 2. 在app和后台通讯的过程中,怎么保证用户信息的安全性 ...
随机推荐
- OpenCV——PS滤镜, 碎片特效
// define head function #ifndef PS_ALGORITHM_H_INCLUDED #define PS_ALGORITHM_H_INCLUDED #include < ...
- PS 滤镜算法原理——曝光过度
这个算法的原理,就是将图像反相,然后分别比较原图与反相后的图三个通道的大小,将小的值输出. clc; clear all; Image=imread('4.jpg'); Image=double(Im ...
- openresty+websocket+redis simple chat
openresty 很早就支持websocket了,但是早期的版本cosocket是单工的,处理起来比较麻烦参见邮件列表讨论 websocket chat,后来的版本cosocket是双全工的,就可以 ...
- Python 可视化TVTK CubeSource管线初使用
CubeSource对象是长方体数据源对象.本次在安装成功TVTK库的基础上显示一个长方体对象.通过以下代码,我们设置一个长宽高分别为1.0,2.0,3.0的长方体数据源并通过管线显示出来. from ...
- Implement int sqrt(int x).
自己设计函数,实现求根号.x是非负整数. Input: 8 Output: 2 当开出根号后有小数,则省略小数部分.. 思路:只要找到一个数a,a*a<=x而且(a+1)*(a+1)>x, ...
- SPRING事务的属性有哪些?其中,事务隔离级别有哪几种?什么情况需要使用这几种事务隔离级别?
Spring 声明式事务,propagation属性列表 PROPAGATION_REQUIRED:支持当前事务,如果当前没有事务,就新建一个事务.这是最常见的选择. PROPAGATION_SU ...
- 企业级web负载均衡完美架构
转载:揭秘企业级web负载均衡完美架构(图) 2010-07-06 15:16 抚琴煮酒 51CTO.com 字号:T | T 相信很多朋友对企业级的负载均衡高可用实例非常感兴趣,此篇文章根据成熟的线 ...
- CAN数据格式-ASC
Vector工具录制的数据,一般有ASC和BLF两种格式,本文介绍ASC. 1. ASC定义 ASC(ASCII)即文本文件,数据已可视化的文本存储. 2.ASC查看 通常情况下,用记事本就可以打开. ...
- 前端技术之_CSS详解第六天--完结
前端技术之_CSS详解第六天--完结 一.复习第五天的知识 a标签的伪类4个: a:link 没有被点击过的链接 a:visited 访问过的链接 a:hover 悬停 a:active 按下鼠标不松 ...
- Space Golf~物理题目
Description You surely have never heard of this new planet surface exploration scheme, as it is bein ...