AES和RSA混合加密技术在网络数据传输中的应用
原文:http://www.fx361.com/page/2017/0110/519967.shtml
摘要:文章通过分析和比较AES加密算法和RsA加密算法的实现过程和各自的特点,提出了一种可以将这2种经典加密算法相混合的、新的数据信息加密技术。这种混合加密技术,可以充分发挥AES算法加密运算速度快,RSA算法密匙容易分发和保管的特点,更加有利于网络传输数据的加密。
关键词:信息安全;数据加密;AES算法;RSA算法
随着互联网技术的迅速发展,许多数据、文件的传递,都是通过开放的Internet网来实现的。许多网络攻击软件可以很容易地监听到这些机密信息。重要、敏感数据有可能在传输过程中被非法窃取,造成泄密。因此,如何对重要数据信息进行加密,就变成了现在急待解决的问题。
1 数据加密算法简介
目前数据加密技术根据加密密钥类型,可以分为单钥密码体制和公钥密码体制,也称为对称加密技术和非对称加密技术。
对称加密技术是指在加密、解密的过程中使用相同的密匙。常用的对称加密技术有DES,3DES和AES。但是由于DES密钥长度较短,只有56位,加密强度较低,已经开始被一种基于Rijndael算法的对称高级数据加密标准AES取代。
而非对称加密技术,它的加密与解密的密匙是不相同的,一个是公匙,一个是私匙。目前常用的非对称加密技术主要有RSA和ECC,其中1024位的RSA是目前使用最为广泛的非对称加密技术。
1.1 AES加密算法
AES是美国标准与技术研究院针对数据的加密所制定的一种新的加密标准。AES是一个迭代、对称的分组密码,它的密匙长度分为3种:128位,192位和256位,可以对128位的数据块进行加密和解密。
利用AES算法对数据进行加密的具体实现过程,首先是由发送方创建一个AES密钥,并用此密钥加密明文得到密文;然后将密文和AES密钥一起通过Internet网发送到接收方;接收方接收后,利用AES密钥将收到的密文解密成明文。具体流程如图1所示。
1.2 RSA加密算法
RSA算法是由Ronald等3人于1978年提出的一种由数论构造的加密算法。一经推出,就得到了广泛认可和使用,它是目前世界上最为完善和成熟的公钥密码体制。
利用RSA算法对数据进行加密的具体实现过程,首先是由接收方创建一对RSA密匙,即一个RSA公钥和一个RSA私钥;通过Internet网,接收方只将其中的RSA公钥传递给发送方,而RSA私钥继续保留在接收方;发送方收到接收方传递过来的RSA公钥后,利用这个公钥对明文信息进行数据加密,从而得到密文;接着把加密后的密文通过Internet网传送给接收方.当接收方收到发送方传递过来的密文以后,便用事先创建的RSA私钥对密文信息进行解密,最后得到明文。具体流程如图2所示。
1.3 仿真实验及结果分析
事先制作两个实验测试文本,大小分别为1923K和21840K。根据AES加密算法和RsA加密算法实现的具体流程,利用基于QT的C++开发平台分别编写代码,来测试这两种算法在加密和解密两个实验测试文本时所耗费的时间。实验结果,如表1所示。
实验结果分析:(1)在相同条件下,AES加密速度比解密速度快,RSA解密比加密慢很多;而无论加密还是解密,RSA都比AES慢很多,由于RSA进行的是大数计算,无论是软件还是硬件实现,速度一直是一个较明显的缺陷。(2)AES加密算法的优点:能够直接用硬件去实现,加密的程度较高,速度较快,对于加密大量数据非常的适用。缺点:加、解密过程使用同一个密匙进行,对于密匙的管理和保护较难。(3)RSA加密算法的优点:具有公钥和私钥两个不同的密钥,公钥用于加密数据,私钥用于解密数据,难于破解;并且不需要通过网络传送保密的密钥。缺点:加密的速度比较慢。
2 AES和RSA混合加密技术
2.1 AES和RSA两种加密算法的比较
通过算法分析和前面的实验,接下来从密钥管理、运算速度、签名认证和安全性能等方面比较AES和RSA两种加密算法:
(1)密钥管理:RSA算法是非对称加密技术,利用公钥进行加密,即使是和不同的对象之间进行通信,关键还是要保管好自己的解密私钥,所以在使用该算法时,加密密钥更换是很容易实现的;而AES算法是对称加密技术,在和不同的对象进行通信的时候,AES需要产生和保管不同的密钥,所以密钥的更换较难实现。(2)运算速度:AES算法的运算速度要比RSA算法的运算速度快。这是因为AES算法的密钥长度最大也就256位,利用硬件或软件都能够实现;而RSA算法,至少需要1024位才能确保安全,而在加、解密过程中会需要很多的运算,因此RSA算法的运算速度肯定要比AES算法要慢。(3)签名认证:RSA属于非对称密码体制,利用RSA算法可以进行数字签名和身份认证操作;AES不能实现数字签名和身份认证,这是由7:AES属于对称密码体制。(4)安全性能:目前还没有能够完全破译AES和RSA的良好方法,所以两者的安全性都很好。
从以上4个方面的比较可以知道,对于大量的数据文件,由于RSA算法加密速度较慢,所以并不合适;而AES算法虽然加密速度很快,但是如何在开放的网络传输环境中保管好AES密钥,成为使用AES加密首先要考虑的问题。因此,可以在传递数据的时候,使用AES算法加密传输数据,同时使用RSA算法加密传送AES密钥,结合两种加密算法各自的特点,发挥优点,避免缺点,从而得到了一种新的混合数据加密技术。
2.2 AES和RsA混合加密算法的设计与实现
AES和RSA混合加密算法加解密过程,如图3所示。
接收方:(1)生成1024位的RSA密匙对。(2)向发送方传递RSA公匙。
发送方:(1)接收接收方发过来的RSA公匙密码;(2)随机生成AES密匙;(3)用AES密匙加密数据,用RSA公匙加密AES密匙;(4)将加密后的AES密匙写入数据文件的头部,加密后的数据写入数据文件的尾部;(5)将数据文件发送给接收方。
接收方:(1)接收发送方发过来的数据文件,并利用自己的RSA私钥解密AES密匙。(2)利用解密后的AES密匙解密数据文件。
JAVA语言的安全性非常高,通过“SunJCF”提供了对各种加密技术的支持,包括DES,3DES,AES,RSA等数据加密技术。JAVA当中的常用数据加密类有:KeyGenerator类用于获得各类对称加密技术的密匙;KeVPairGenerator类用于获得非对称加密技术的密匙;Cipher类是JAVA加密的主要类,用于按一定的算法对数据进行加密、解密、包装和返包装。而AES和RSA混合加密算法利用JAVA语言可以较容易实现。
3 结语
文章首先介绍了经典的对称加密技术AES加密算法和非对称加密技术RSA加密算法的实现过程;并通过算法分析和仿真实验,从密钥管理、运算速度、签名认证和安全性能等方面比较了两种加密算法各自的特点,提出了将AES算法和RSA算法相结合,从而得到了一种新的数据加密技术。这种新的混合加密技术使得数据的加密速度得到了提高,并且降低了加密密钥的管理难度,更加适合互联网数据的加密和传输。
AES和RSA混合加密技术在网络数据传输中的应用的更多相关文章
- 前后端API交互数据加密——AES与RSA混合加密完整实例
前言 前段时间看到一篇文章讲如何保证API调用时数据的安全性(传送门:https://blog.csdn.net/ityouknow/article/details/80603617),文中讲到利用R ...
- WebSocket数据加密——AES与RSA混合加密
前言 之前在写“一套简单的web即时通讯”,写到第三版的时候没什么思路,正好微信公众号看到一篇讲API交互加密,于是就自己搞了一套AES与RSA混合加密,无意中产生应用在WebSocket想法,好在思 ...
- iOS开发之 AES+Base64数据混合加密与解密
2016-04-08 09:03 编辑: liubinqww 分类:iOS开发 来源:liubinqww 投稿 4 889 "APP的数据安全已经牵动着我们开发者的心,简单的MD5/ ...
- AES和RSA的加密过程通过面向对象的方式写成一个类,封装起来
# 面向对象的方式 实现加密方法 from Crypto.Cipher import AES from Crypto import Random from binascii import b2a_he ...
- Java加密技术
相关链接: Java加密技术(一)——BASE64与单向加密算法MD5&SHA&MAC Java加密技术(二)——对称加密DES&AES Java加密技术(三)——PBE算法 ...
- Java加密技术(八)——数字证书
原文:http://snowolf.iteye.com/blog/391931 请大家在阅读本篇内容时先阅读 Java加密技术(四),预先了解RSA加密算法. 在构建Java代码实现前,我们需要完成证 ...
- 【云安全与同态加密_调研分析(8)】同态加密技术及其应用分析——By Me
◆同态加密技术(Homomorphic Encryption, HE)及其应用◆ ◆加密方案◆ ◆应用领域◆ ◆厂商◆ ◆同态加密现有产品形态和工程实现◆ ◆参考链接◆ ◆备注(其他参考信息)◆ 同态 ...
- 学习加密(四)spring boot 使用RSA+AES混合加密,前后端传递参数加解密
学习加密(四)spring boot 使用RSA+AES混合加密,前后端传递参数加解密 技术标签: RSA AES RSA AES 混合加密 整合 前言: 为了提高安全性采用了RS ...
- Android接口安全 - RSA+AES混合加密方案
转载请注明出处: http://blog.csdn.net/aa464971/article/details/51034462 本文以Androidclient加密提交数据到Java服务端后进行解密为 ...
随机推荐
- 【Python进阶】无论API怎么变,SDK都可以根据URL实现完全动态的调用
现在很多网站都搞REST API,比如新浪微博.豆瓣啥的,调用API的URL类似: http://api.server/user/friends http://api.server/user/time ...
- Java反编译插件
一.eclipse->help->Eclipse Marketplace 如下图:搜索JadClipse,install进行下载安装,
- react-native debug js remotely跨域问题
react-native debug js remotely跨域问题 我们在安卓真机上调试react-native时,启用debug js remotely的时候,会出现跨域问题.这个时候我们只需要一 ...
- USACO 3.2.6 Sweet Butter 香甜的黄油(最短路)
Description 农夫John发现做出全威斯康辛州最甜的黄油的方法:糖.把糖放在一片牧场上,他知道N(1<=N<=500)只奶牛会过来舔它,这样就能做出能卖好价钱的超甜黄油.当然,他 ...
- IDEA + SSH OA 第一天(项目收获:Hibernate XML)
之前都是用工具逆向生成代码,很少写配置文件,今天试着使用,有几点需要注意 Cascade(级联): Cascade代表是否执行级联操作,Inverse代表是否由己方维护关系. Cascade属性的可能 ...
- TeamCity编译执行selenium上传窗口脚本缺陷
2015-07-04 18:05 编写本文 TeamCity编译selenium脚本,对于上传窗口处理只支持sendKeys的使用,不支持模拟人为按下Enter键和使用autoIt等操作,即使本地调试 ...
- 将Python项目生成所有依赖包的清单requirements .txt文件
在开发中不同的项目总会牵扯到各种不同作用的包安装,下面是总结一下对写好的项目自动生成依赖清单,以及在新环境下解决依赖的方法: 一:生成所有依赖清单requirements.txt 这里需要使用到的工具 ...
- Docker 入门 到部署Web 程序- (阿里面试常用的docker命令和优点)
最近阿里的面试官问我Docker是做什么用的,我记得之前360和美团,京东的都问过,但是一直没时间看,最近有时间了,系统的学习了一下Docker,在此做一下记录,方便各位看官学习交流 一.Docker ...
- MySQL专题 2 数据库优化 Slow Query log
MySQL Server 有四种类型的日志——Error Log.General Query Log.Binary Log 和 Slow Query Log. 第一个是错误日志,记录 mysqld 的 ...
- postman 断言学习
请求 url :https://www.v2ex.com/api/nodes/show.json?name=python get请求 postman发起请求并做断言 断言: tests["B ...