博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
**17.app后端如何保证通讯安全--aes对称加密
阅读量:7294 次
发布时间:2019-06-30

本文共 1515 字,大约阅读时间需要 5 分钟。

在上文《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))’
  http://test.com/api/login
  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))’
  http://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来做秘钥了。

 

http://blog.csdn.net/newjueqi/article/details/44177063

转载于:https://www.cnblogs.com/kenshinobiy/p/4344759.html

你可能感兴趣的文章
phpunit 单元测试案例--签到任务
查看>>
python与shell校验IP地址合法性
查看>>
大话测试之BT思维
查看>>
利用Traefik+Docker构建可弹性扩展的微服务或服务集群
查看>>
记忆碎片 - 2015.09.11
查看>>
Linux下磁盘IO读写性能测试脚本
查看>>
SFB 项目经验-28-设置-所有用户-OWA-时区-语言-跳过-时区设置)
查看>>
当一个有性能问题的数据库摆在你的面前,作为责任人,你的处理思路是什么?...
查看>>
Android系统匿名共享内存(Anonymous Shared Memory)C++调用接口分析(6)
查看>>
Windows Server 2012正式版RDS系列⑥
查看>>
Enabling Redo Log Transport Compression with active dataguard
查看>>
从JS对象开始,谈一谈“不可变数据”和函数式编程
查看>>
STL标准容器类简介
查看>>
Microsoft.Bcl.Build 1.0.10 稳定版发布
查看>>
【jQuery插件】用jQuery Masonry快速构建一个pinterest网站布局(转)
查看>>
怎样在Github参与一个开源项目
查看>>
网页插件学javascript还是jquery好啊?
查看>>
FusionCharts简单教程(一)---建立第一个FusionCharts图形
查看>>
jQuery图片轮播(焦点图)插件(转载)
查看>>
将图片保存到系统相冊的两种方法
查看>>