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)比较和项目应用
加密技术通常分为两大类:"对称式"和"非对称式". 对称性加密算法:对称式加密就是加密和解密使用同一个密钥.信息接收双方都需事先知道密匙和加解密算法且其密匙是相 ...
随机推荐
- 【构造】【分类讨论】Codeforces Round #435 (Div. 2) C. Mahmoud and Ehab and the xor
题意:给你n,x,均不超过10^5,让你构造一个无重复元素的n个元素的非负整数集合(每个元素不超过10^6),使得它们的Xor和恰好为x. 如果x不为0: 随便在x里面找一个非零位,然后固定该位为0, ...
- 【字符串哈希】【哈希表】Aizu - 1370 - Hidden Anagrams
给你两个4k长度的串,问你最长公共子串.两个子串相同被定义为所有字母的出现次数分别相同即可. 就枚举第一个串的所有子串,将字母出现的次数看作一个大数,进行哈希(双关键字),塞到哈希表里面.然后枚举第二 ...
- 计算gcd Exercise07_14
import java.util.Scanner; /** * @author 冰樱梦 * 时间:2018年下半年 * 题目:计算gcd * */ public class Exercise07_14 ...
- HTML5 Video P2P技术研究(转)
说明:之前在Flash时代,可以基于其实现P2P的技术,也就是现在主流的视频网站用的视频技术,不过要实现P2P技术,在Flash时代有点难,且要服务器支持等等:但是现在基于HTML5技术的P2P技术使 ...
- 明尼苏达推荐系统导论(第一课 欢迎来到RS)
一.RS介绍 1.显示评分:直接从用户来 隐式评分:从用户活动推测得到的 2.预测是偏好的估计,是预测缺失值,推荐是从其他用户推荐项目,是推荐感兴趣的项目. 3.协同表示利用其它用户的数据 二.欢迎来 ...
- JavaScript基础入门教程(三)
说明 前面的两篇博客介绍了js中的基本知识中的变量类型.标识符等.这篇博客主要谈表达式以及运算符. 原始表达式 原始表达式就是表达式中最小的,不能在分割的表达式,一般指变量.常数直接量.关键字(tru ...
- Xcode8从相册选图片
使用Xcode8写自己的东西有一段时间了,在使用Xcode8编程时不得不说我特别喜欢改后的默认字体,哈哈,当然默认字体是可以调回去的,只不过默认的字体感觉看起来比以前舒服了,毕竟不会像之前那么”字正腔 ...
- OpenCV平面物体检测
平面物体检测 这个教程的目标是学习如何使用 features2d 和 calib3d 模块来检测场景中的已知平面物体. 测试数据: 数据图像文件,比如 “box.png”或者“box_in_scene ...
- rsa实现js前台加密java后台解密
前段时间写了一个rsa前台加密到后台用java解密,下面共享下实现思路: 准备工作:第三方包是必须的 bcprov-jdk15on-148.jar commons-codec-1.7.jar comm ...
- Python和Flask真强大:不能错过的15篇技术热文(转载)
Python和Flask真强大:不能错过的15篇技术热文 本文精选了 Python开发者 11月份的15篇 Python 热文.其中有基础知识,机器学习,爬虫项目实战等. 注:以下文章,点击标题即可阅 ...