原文: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混合加密技术在网络数据传输中的应用的更多相关文章

  1. 前后端API交互数据加密——AES与RSA混合加密完整实例

    前言 前段时间看到一篇文章讲如何保证API调用时数据的安全性(传送门:https://blog.csdn.net/ityouknow/article/details/80603617),文中讲到利用R ...

  2. WebSocket数据加密——AES与RSA混合加密

    前言 之前在写“一套简单的web即时通讯”,写到第三版的时候没什么思路,正好微信公众号看到一篇讲API交互加密,于是就自己搞了一套AES与RSA混合加密,无意中产生应用在WebSocket想法,好在思 ...

  3. iOS开发之 AES+Base64数据混合加密与解密

    2016-04-08 09:03 编辑: liubinqww 分类:iOS开发 来源:liubinqww 投稿 4 889     "APP的数据安全已经牵动着我们开发者的心,简单的MD5/ ...

  4. AES和RSA的加密过程通过面向对象的方式写成一个类,封装起来

    # 面向对象的方式 实现加密方法 from Crypto.Cipher import AES from Crypto import Random from binascii import b2a_he ...

  5. Java加密技术

    相关链接: Java加密技术(一)——BASE64与单向加密算法MD5&SHA&MAC Java加密技术(二)——对称加密DES&AES Java加密技术(三)——PBE算法  ...

  6. Java加密技术(八)——数字证书

    原文:http://snowolf.iteye.com/blog/391931 请大家在阅读本篇内容时先阅读 Java加密技术(四),预先了解RSA加密算法. 在构建Java代码实现前,我们需要完成证 ...

  7. 【云安全与同态加密_调研分析(8)】同态加密技术及其应用分析——By Me

    ◆同态加密技术(Homomorphic Encryption, HE)及其应用◆ ◆加密方案◆ ◆应用领域◆ ◆厂商◆ ◆同态加密现有产品形态和工程实现◆ ◆参考链接◆ ◆备注(其他参考信息)◆ 同态 ...

  8. 学习加密(四)spring boot 使用RSA+AES混合加密,前后端传递参数加解密

      学习加密(四)spring boot 使用RSA+AES混合加密,前后端传递参数加解密 技术标签: RSA  AES  RSA AES  混合加密  整合   前言:   为了提高安全性采用了RS ...

  9. Android接口安全 - RSA+AES混合加密方案

    转载请注明出处: http://blog.csdn.net/aa464971/article/details/51034462 本文以Androidclient加密提交数据到Java服务端后进行解密为 ...

随机推荐

  1. C语言零碎知识点

    1.  int整形在64位和32位计算机中都占4个字节. 指针在64位占8个字节,32位占4个字节. 2.  数组下标从0开始,a[0]开始,链表下标从1开始,a[1]开始. 3. 条件运算符(con ...

  2. app开发相关

    app播放UIWebview 没有声音解决: 设置 allowsInlineMediaPlayback  = YES; mediaPlaybackRequiresUserAction = NO

  3. 20181113-7 Beta阶段第1周/共2周 Scrum立会报告+燃尽图 05

    作业要求https://edu.cnblogs.com/campus/nenu/2018fall/homework/2387 版本控制https://git.coding.net/lglr2018/F ...

  4. textarea中文提交乱码问题解决

    在A.jsp中有如下语句: <textarea rows="10" cols="30" name="texts"><%=r ...

  5. 机器学习实战第二章----KNN

    tile的使用方法 tile(A,n)的功能是把A数组重复n次(可以在列方向,也可以在行方向) argsort()函数 argsort()函数返回的是数组中值从大到小的索引值 dict.get()函数 ...

  6. OpenFlow协议

    功能 1.0版本Openflow:控制器通过Openflow协议与交换机建立了安全通道(Sceure Channel),下发流表. 1.3版本Openflow:多控制器,多流表. 用于实现Contro ...

  7. HDU 5211 Mutiple 水题

    题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=5211 题解: 1.筛法: #include<iostream> #include< ...

  8. DescriptionAttribute Class

    指定属性或事件的描述. [Description("The image associated with the control"),Category("Appearanc ...

  9. 在Wmware虚拟机上如何检查是否CPU支持虚拟化 和 加载kvm模块

    在vm虚拟机中 修改 虚拟机==>设置==> 处理器==>虚拟化引擎(选第二项:虚拟化Intel VT-x/EPT 或 AMD-V/RVI(V) )     # vmx或svm :表 ...

  10. 将java开发的wordcount程序提交到spark集群上运行

    今天来分享下将java开发的wordcount程序提交到spark集群上运行的步骤. 第一个步骤之前,先上传文本文件,spark.txt,然用命令hadoop fs -put spark.txt /s ...