搜索
首页后端开发php教程AES/RSA加密机制
AES/RSA加密机制Apr 04, 2017 pm 02:36 PM

在服务器与终端设备进行HTTP通讯时,常常会被网络抓包、反编译(Android APK反编译工具)等技术得到HTTP通讯接口地址和参数。为了确保信息的安全,我们采用AES+RSA组合的方式进行接口参数加密和解密。

1.关于RSA加密机制:公钥用于对数据进行加密,私钥对数据进行解密,两者不可逆。公钥和私钥是同时生成的,一一对应。比如:A拥有公钥,B拥有公钥和私钥。A将数据通过公钥进行加密后,发送密文给B,B可以通过私钥和公钥进行解密。

2.AES加密也叫对称加密:A用密码对数据进行AES加密后,B用同样的密码对密文进行AES解密。


 具体操作方法:

1.在终端中采用openssl方式输入密钥的相关属性(公司名、邮箱等),然后在终端当前所在的地址下,生成公钥和私钥共7个文件(7个文件如何使用请看附录的拓展了链接)。

2.此时假设Android客户端拥有公钥PublicKey,服务器端拥有公钥PublicKey和私钥PrivateKey。

3.安卓发送请求到服务器端:安卓随机生成Byte[]随机密码,假设RandomKey=“123456”,通过AES算法,对Json数据利用进行加密。

4.但是此刻服务器并不知道客户端的RandomKey是什么,因此需要同时将Randomkey传给服务器,否则服务器无法通过AES对Json数据进行解密。但是如果直接发送请求,Randomkey就会暴露,所以要对RandomKey进行不可逆的RSA加密。

5.安卓将使用Randomkey进行AES加密的Json数据,和使用PublicKey进行RSA加密的RandomKey通过HTTP传送到服务器端。数据请求工作完成。

6.服务器端接收到AES加密的Json数据和Rsa加密的RandomKey数据。

7.服务器通过私钥PrivateKey对加密后的RandomKey进行Rsa解密。得到安卓生成的原始Randomkey。

8.利用原始的RandomKey对加密后的Json数据进行AES对称解密。至此已经得到安卓端发过来的原始Json数据。进行常规的服务器业务操作,然后将返回数据通过安卓端的RandomKey进行AES加密gouhou后,Response返回。

9.安卓端接收到Response的数据后,利用之前本地生成的RandomKey直接进行AES解密即可。

详细的流程图可以查看下图。


AES/RSA加密机制

客户端-服务器端HTTPS数据传输流程图

注意事项

1.在实际的开发过程中,发现RSA和AES有不同的密文生成标准,会不兼容IOS。IOS在RSA算法中需要的公钥与JAVA不同。详细的解决方案请查看:

2.AES加密不可以使用超过128Byte的KEY,因为在jdk1.7以上的版本不支持超过128Byte的KEY。

小结:从性能上来测,整个客户端送加密数据开始到解密得到回传的原始数据不超过300ms(Iphone4和Centos Java服务器传输测试)。本方案没有采用TOKEN的方式,或许以后用到。公钥如何更新也需要继续完善。


以上是AES/RSA加密机制的详细内容。更多信息请关注PHP中文网其他相关文章!

声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
如何在Java中进行AES加密和解密操作如何在Java中进行AES加密和解密操作May 08, 2023 pm 10:34 PM

1.背景知识在密码学中,加密算法分为单向加密和双向加密。对称加密是指加密和解密使用相同的密钥,包括AES加密、DES加密等。非对称加密是指加密和解密使用不同的密钥,包括RSA加密等。单向加密包括MD5、SHA等摘要算法,它们是不可逆的。双向加密包括对称加密和非对称加密。双向加密是可逆的,存在密文的密钥。2.AES简介AES:高级加密标准(AdvancedEncryptionStandard)是美国联邦政府采用的一种区块加密标准,是目前最流行的一种对称加密算法。是用来替代DES的新一代分组加密算法

用 Python 来实现 RSA 加解密用 Python 来实现 RSA 加解密Apr 14, 2023 pm 02:13 PM

昨天看到一篇英文文章[1],展示了如何用 Python 来实现 RSA 算法,代码的逻辑与前文一文搞懂 RSA 算法一样,不太熟悉 RSA 的朋友可以看一下一文搞懂 RSA 算法,里面对什么是 RSA,RSA 的数学原理进行了说明,并举了一个简单的例子,可以说是全知乎最容易读懂 RSA 的文章了(这话来自读者评论)。这篇英文提供的代码我运行了下,发现不能加密中文,于是就修改了下加解密的函数,让其支持中文加解密。今天的文章就分享一下如何用 Python 来实现 RSA 加解密的这一过程,帮助你建立

如何利用PHP和GMP进行大整数的RSA加密和解密算法如何利用PHP和GMP进行大整数的RSA加密和解密算法Jul 28, 2023 pm 05:25 PM

如何利用PHP和GMP进行大整数的RSA加密和解密算法RSA加密算法是一种非对称加密算法,广泛应用于数据安全领域。它基于两个特别大的素数和一些简单的数学运算,实现了公钥加密和私钥解密的过程。在PHP语言中,可以通过GMP(GNUMultiplePrecision)库来实现大整数的计算,结合RSA算法实现加密和解密功能。本文将介绍如何利用PHP和GMP库来

SpringBoot如何实现RAS+AES自动接口解密SpringBoot如何实现RAS+AES自动接口解密May 20, 2023 pm 04:04 PM

一、讲个事故接口安全老生常谈了过年之前做了过一款飞机大战的H5小游戏,里面无限模式-需要保存用户的积分,因为使用的Body传参,参数是可见的,为了接口安全我,我和前端约定了传递参数是:用户无限模式的积分+“我们约定的一个数字”+用户id的和,在用Base64加密,请求到服务器我再解密,出用户无限模式的积分;如下:{"integral":"MTExMTM0NzY5NQ==",}可是过年的时候,运营突然找我说无限模式积分排行榜分数不对:这就很诡异了,第二名才一

如何使用PHP和GMP实现RSA加密和解密算法如何使用PHP和GMP实现RSA加密和解密算法Jul 28, 2023 pm 11:54 PM

如何使用PHP和GMP实现RSA加密和解密算法RSA加密算法是一种非对称加密算法,广泛应用于信息安全领域。在实际应用中,常常需要使用编程语言来实现RSA加密和解密算法。PHP是一种常用的服务器端脚本语言,而GMP(GNUMultiplePrecision)是一种高精度数学计算库,可以帮助我们进行RSA算法中需要的大数运算。本文将介绍如何使用PHP和GMP

PHP中的AES256加密技术及其在框架中的应用方法详解PHP中的AES256加密技术及其在框架中的应用方法详解Jun 09, 2023 pm 12:25 PM

随着互联网的发展和普及,数据的安全性越来越受到重视。在数据传输和存储过程中,加密技术是一种非常有效的手段,通过加密可以保证数据的机密性和完整性。而在PHP中,AES256加密技术是一种非常流行的加密方式,本文将详细介绍其在框架中的应用方法。AES256加密技术简介AES(AdvancedEncryptionStandard)即高级加密标准,是现代流行的对

PHP实现RSA非对称加密技术PHP实现RSA非对称加密技术Jun 18, 2023 am 09:34 AM

RSA非对称加密技术是目前最为流行和安全的加密方式之一。PHP作为一种广泛应用的编程语言,在实现RSA加密方面也有着独特的优势。本文将为读者介绍如何使用PHP实现RSA非对称加密技术。一、什么是RSA算法RSA算法是一种非对称加密技术,它通常用于数据加密和数字签名。它的安全性主要基于一个数论难题,即在极短时间内对超大整数进行因数分解的难度。RSA算法的加密流

如何利用Python编写RSA加密算法?如何利用Python编写RSA加密算法?Sep 20, 2023 pm 01:21 PM

如何利用Python编写RSA加密算法?引言:RSA是一种非对称加密算法,被广泛应用于信息安全领域。在现代通信中,RSA加密算法常用于加密和解密敏感数据。本文将介绍如何使用Python编写RSA加密算法,并提供具体的代码示例。安装Python库在开始编写RSA加密算法之前,需要安装Python的加密库。可以使用以下命令安装:pipinstallrsa生成

See all articles

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

AI Hentai Generator

AI Hentai Generator

免费生成ai无尽的。

热门文章

R.E.P.O.能量晶体解释及其做什么(黄色晶体)
2 周前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳图形设置
2 周前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.如果您听不到任何人,如何修复音频
2 周前By尊渡假赌尊渡假赌尊渡假赌

热工具

SublimeText3 英文版

SublimeText3 英文版

推荐:为Win版本,支持代码提示!

mPDF

mPDF

mPDF是一个PHP库,可以从UTF-8编码的HTML生成PDF文件。原作者Ian Back编写mPDF以从他的网站上“即时”输出PDF文件,并处理不同的语言。与原始脚本如HTML2FPDF相比,它的速度较慢,并且在使用Unicode字体时生成的文件较大,但支持CSS样式等,并进行了大量增强。支持几乎所有语言,包括RTL(阿拉伯语和希伯来语)和CJK(中日韩)。支持嵌套的块级元素(如P、DIV),

禅工作室 13.0.1

禅工作室 13.0.1

功能强大的PHP集成开发环境

Atom编辑器mac版下载

Atom编辑器mac版下载

最流行的的开源编辑器

MinGW - 适用于 Windows 的极简 GNU

MinGW - 适用于 Windows 的极简 GNU

这个项目正在迁移到osdn.net/projects/mingw的过程中,你可以继续在那里关注我们。MinGW:GNU编译器集合(GCC)的本地Windows移植版本,可自由分发的导入库和用于构建本地Windows应用程序的头文件;包括对MSVC运行时的扩展,以支持C99功能。MinGW的所有软件都可以在64位Windows平台上运行。