AES + RSA + Hash 实现 C-S 安全交互
概述
AES 由于其执行速度快,易于硬件实现,破解难度大等优势,被广泛用于数据的加密。
既然是对称加密,那如何保证秘钥的安全传输?很容易想到用 RSA 加密秘钥。由于只能用私钥解密,而私钥不需要交互双方都知道也就不用通过网络传输,只要私钥不泄露信息就是安全的。
但如果别人截取到请求后伪造数据也用 RSA 公钥加密这种情况呢?也就是如何保证数据的准确性?这个时候就需要签名校验。
本文基于 AES + RSA + Hash 实现一套完整的足够安全的加解密算法。
流程图

实现
Client 端
- 生成 AES 密钥。
- 使用生成的 AES 密钥对请求的明文数据进行加密,得到 EncryptData。
- 使用 Server 端提供的接口获取RSA公钥。
- 使用获取到的 RSA 公钥对 AES 密钥进行加密,得到 EncryptAesKey。
- 生成签名(CRC 或 Hash 都可以,简单点可以只对 AES 秘钥按一定的规则转换后 Hash)。
- 将 EncryptAesKey EncryptData 和 Hash 一起发送给 Server 端。
Server 端
- 生成 RSA 密钥对,并提供接口给 client 获取 RSA 公钥(或者直接私下明文约定好)。
- 响应 Client 的 Http 请求,获取到 EncryptAesKey EncryptData 和 Hash。
- 使用 RSA 私钥 EncryptAesKey 进行 RSA 解密,得到 AES 密钥 AesKey。
- 按照约定的规则对 AesKey 进行转换后再生成签名,校验获取到的 Hash 字段,如不通过就不用继续后边的处理了。
- 使用最终的 AesKey 对 EncryptData 进行 AES 解密,得到明文数据。
- 做响应的处理,返回结果。
注:返回结果的加解密逆推回去即可。
一些扩展
- 签名前最好对参与签名的字段先 Base64 编码一下,避免一些特殊字符导致签名校验不通过,返回结果最好也编码下。
- 请求和返回数据最好增加时间戳或 UUID 字段,这样生成的签名基本不会出现重复的情况,而且每次都有变动。
AES + RSA + Hash 实现 C-S 安全交互的更多相关文章
- 加解密 3DES AES RSA 简介 示例 MD
Markdown版本笔记 我的GitHub首页 我的博客 我的微信 我的邮箱 MyAndroidBlogs baiqiantao baiqiantao bqt20094 baiqiantao@sina ...
- 我的Android进阶之旅------>Android采用AES+RSA的加密机制对http请求进行加密
前言 未加密的抓包截图 加密之后的抓包截图 基本需求及概念 AES算法 AES基本原理及算法流程 AES算法流程 RSA算法 RSA算法基本原理及流程 RSA算法实现流程 AES与RSA相结合数据加密 ...
- 开放接口的安全验证方案(AES+RSA)
http://wubaoguo.com/2015/08/21/%E5%BC%80%E6%94%BE%E6%8E%A5%E5%8F%A3%E7%9A%84%E5%AE%89%E5%85%A8%E9%AA ...
- 安全篇-AES/RSA加密机制
在服务器与终端设备进行HTTP通讯时,常常会被网络抓包.反编译(Android APK反编译工具)等技术得到HTTP通讯接口地址和参数.为了确保信息的安全,我们采用AES+RSA组合的方式进行接口参数 ...
- 【原创】浅析密码学在互联网支付中的应用|RSA,Hash,AES,DES,3DES,SHA1,SHA256,MD5,SSL,Private Key,Public Key
一)概述 什么是互联网支付? 当支付遇到互联网,一场革命自然不可避免.成为现实的是传统的现金支付已经“退居二线”,各种在线支付方式成为人们日常消费的主要支付方式.银行推出的网银以及第三方支付公司推出的 ...
- APP安全--网络传输安全 AES/RSA/ECC/MD5/SHA
移动端App安全如果按CS结构来划分的话,主要涉及客户端本身数据安全,Client到Server网络传输的安全,客户端本身安全又包括代码安全和数据存储安全.所以当我们谈论App安全问题的时候一般来说在 ...
- 加密算法比较3DES AES RSA ECC MD5 SHA1等
加 密算法通常分为对称性加密算法和非对称性加密算法,对于对称性加密算法,信息接收双方都需事先知道密匙和加解密算法且其密匙是相同的,之后便是对数据进行 加解密了.非对称算法与之不同,发送双方A,B事先均 ...
- 加密算法(DES,AES,RSA,MD5,SHA1,Base64)比较和项目应用(转载)
加密技术通常分为两大类:"对称式"和"非对称式". 对称性加密算法:对称式加密就是加密和解密使用同一个密钥.信息接收双方都需事先知道密匙和加解密算法且其密匙是相 ...
- 加密算法(DES,AES,RSA,MD5,SHA1,Base64)比较和项目应用
加密技术通常分为两大类:"对称式"和"非对称式". 对称性加密算法:对称式加密就是加密和解密使用同一个密钥.信息接收双方都需事先知道密匙和加解密算法且其密匙是相 ...
随机推荐
- CentOS 6.9/Ubuntu 16.04源码安装RabbitMQ(二进制包tar.gz)
说明:CentOS的安装方式同样适合在Ubuntu中,把源改成APT即可. 一.安装erlang: 下载erlang: 从Erlang的官网http://www.erlang.org/download ...
- WPF中的动画——(六)演示图板
前面所介绍的都是单一的动画,它只能修改单一属性.有的时候,我们需要将一组动画一起进行,对于一个按钮,我们可能有如下需求: 选择该按钮时,该按钮增大并更改颜色. 单击该按钮时,该按钮缩小并恢复其原始大小 ...
- HDU 1845 Jimmy’s Assignment(二分匹配)
Jimmy’s Assignment Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 65535/65535 K (Java/Other ...
- FORM - FILE.EXPORT 导出功能
对于数据块项,是不用添加任何触发器就可以使用导出功能的. 如果不能使用该功能,可能是由于在需要使用导出功能的块上添加了block级触发器when-new-item-instance,但执行层次为&qu ...
- NGINX -- 详解Nginx几种常见实现301重定向方法上的区别
Nginx下常见的301跳转有以下三种,虽然都能达到同样的目的.但是三种写法上还是有区别的,主要的区别是在正则匹配的性能上. 第一种:使用rewrite指令,通过正则匹配所有的URI后再去掉开头第一个 ...
- 解决Hue/hiveserver2报错:java.io.IOException: Job status not available
sql是:select count(distinct col) from db.table; 排查过程中遇到过几个不同的报错: 1. beeline -u jdbc:hive2://0.0.0.0:1 ...
- mongo 误操作恢复数据
场景:我往同一个集合里面插入 三条数据 aa:aa bb:bb cc:cc .后来我后悔了,不想插入 bb:bb,通过oplog重放过滤好 bb:bb这条数据. 原理: 1.通过 oplog.r ...
- Hadoop平台配置汇总
Hadoop平台配置汇总 @(Hadoop) Hadoop hadoop-env.sh和yarn-env.sh中export log和pid的dir即可和JAVA_HOME. core-site.xm ...
- C#/Sqlite-单机Window 程序 sqlite 数据库实现
数据库分析和选择 Excel 文件 做数据源 限制性比较强,且不适合查询,分析 等操作 Access 数据库 Access 管理数据界面和功能不强 mysql 和sql server 功能满足,但需要 ...
- Polar Code主要研究者的个人主页(持续更新中........)
Polar Code主要研究者的个人主页(持续更新中........) 1. Polar码的编译码.以及List译码算法,都少不了Ido Tal这位大牛. http://webee.technion. ...