数据加密原理
❶ 数据加密原理是什么 数据解密原理介绍【详解】
数据加密和解密,数据加密和解密原理是什么?
随着Internet 的普及,大量的数据、文件在Internet 传送,因此在客观上就需要一种强有力的安全措施来保护机密数据不被窃取或篡改。我们有几种方法来加密数据流。所有这些方法都可以用软件很容易的实现,但是当我们只知道密文的时候,是不容易破译这些加密算法的(当同时有原文和密文时,破译加密算法虽然也不是很容易,但已经是可能的了) 。最好的加密算法对系统性能几乎没有影响,并且还可以带来其他内在的优点。例如,大家都知道的pkzip ,它既压缩数据又加密数据。又如,dbms 的一些软件包总是包含一些加密方法以使复制文件这一功能对一些敏感数据是无效的,或者需要用户的密码。所有这些加判启悔密算法都要有高效的加密和解密能力。幸运的是,在所有的加密算法中最简单的一种就是“置换表”算法,这种算法也能很好达到加密的需要。每一个数据段(总是一个字节) 对应着“置换表”中的一个偏移量,偏移量所对应的值就输出成为加密后的文件。加密程序和解密程序都需要一个这样的“置换表”。事实上,80x86 cpu 系列就有一个指令‘xlat’在硬件级来完成这样的工作。这种加密算法比较简单,加密解密速度都很快,但是一旦这个“置换表”被对方获得,那这个加密方案就完全被识破了。更进一步讲,这种加密算法对于黑客破译来讲是相当直接的,只要找到一个“置换表”就可以了。对这种“置换表”方式的一个改进就是使用2 个或者更多的“置换表”,这些表都是基于数据流中字节的位置的,或者基于数据流本身。这时,破译变的更加困难,因为黑客必须正确的做几旁皮次变换。通过使用更多的“置换表”,并且按伪随机的方式使用每个表,这种改进的加密方法已经变的很难破译。比如,我们可以对所有的偶数位置的数据使用a 表,对所有的奇数位置使用b 表,即使黑客获得了明文和密文,他想破译这个加密方案也是非常困难的,除非黑客确切的知道用了两张表。与使用“置换表”相类似“, 变换数据位置”也在计算机加密中使用。但是,这需要更多的执行时间。从输入中读入明文放到一个buffer 中,再在buffer 中对他们重排序,然后按这个顺序再输出。解密程序按相反的顺序还原数据。这种方法总是和一些别的加密算法混合使用,这就使得破译变的特别的困难,几乎有些不可能了。例如,有这样一个词,变换起字母的顺序,slient 可以变为listen ,但所有的字母都没有变化,没有增加也没有减少,但是字母之间的顺序已经变化了。但是,还有一种更好的加密算法,只有计算机可以做,就是字/ 字节循环移位和xor 操作。如果我们把一个字或字节在一个数据流内做循环移位,使用多个或变化的方向(左移或右移) ,就可以迅速的产生一个加密的数据流。这种方法是很好的,破译它就更加困难! 而且,更进一步的是,如果再使用xor操作,按位做异或操作,就就使破译密码更加困难了。如果再使用伪随机的方法,这涉及到要产生一系列的数字,我们可以使用fibbonaci 数列。对数列所产生的数做模运算(例如模3) ,得到一个结果,然后循环移位这个结果的次数,将使破译次密码变的几乎不可能! 但是,使用fibbonaci 数列这种伪随机的掘正方式所产生的密码对我们的解密程序来讲是非常容易的。在一些情况下,我们想能够知道数据是否已经被篡改了或被破坏了,这时就需要产生一些校验码,并且把这些校验码插入到数据流中。这样做对数据的防伪与程序本身都是有好处的。但是感染计算机程序的病毒才不会在意这些数据或程序是否加过密,是否有数字签名。所以,加密程序在每次load 到内存要开始执行时,都要检查一下本身是否被病毒感染,对与需要加、解密的文件都要做这种检查! 很自然,这样一种方法体制应该保密的,因为病毒程序的编写者将会利用这些来破坏别人的程序或数据。因此,在一些反病毒或杀病毒软件中一定要使用加密技术。
循环冗余校验是一种典型的校验数据的方法。对于每一个数据块,它使用位循环移位和xor 操作来产生一个16 位或32 位的校验和,这使得丢失一位或两个位的错误一定会导致校验和出错。这种方式很久以来就应用于文件的传输,例如xmodem - crc。这是方法已经成为标准,而且有详细的文档。但是,基于标准crc 算法的一种修改算法对于发现加密数据块中的错误和文件是否被病毒感染是很有效的。
一个好的加密算法的重要特点之一是具有这种能力:可以指定一个密码或密钥,并用它来加密明文,不同的密码或密钥产生不同的密文。这又分为两种方式:对称密钥算法和非对称密钥算法。所谓对称密钥算法就是加密解密都使用相同的密钥,非对称密钥算法就是加密解密使用不同的密钥。非常着名的pgp公钥加密以及rsa 加密方法都是非对称加密算法。加密密钥,即公钥,与解密密钥,即私钥,是非常的不同的。从数学理论上讲,几乎没有真正不可逆的算法存在。例如,对于一个输入‘a’执行一个操作得到结果‘b’,那么我们可以基于‘b’,做一个相对应的操作,导出输入‘a’。在一些情况下,对于每一种操作,我们可以得到一个确定的值,或者该操作没有定义(比如,除数为0) 。对于一个没有定义的操作来讲,基于加密算法,可以成功地防止把一个公钥变换成为私钥。因此,要想破译非对称加密算法,找到那个唯一的密钥,唯一的方法只能是反复的试验,而这需要大量的处理时间。
rsa 加密算法使用了两个非常大的素数来产生公钥和私钥。即使从一个公钥中通过因数分解可以得到私钥,但这个运算所包含的计算量是非常巨大的,以至于在现实上是不可行的。加密算法本身也是很慢的,这使得使用rsa 算法加密大量的数据变的有些不可行。这就使得一些现实中加密算法都基于rsa 加密算法。pgp 算法(以及大多数基于rsa 算法的加密方法) 使用公钥来加密一个对称加密算法的密钥,然后再利用一个快速的对称加密算法来加密数据。这个对称算法的密钥是随机产生的,是保密的,因此,得到这个密钥的唯一方法就是使用私钥来解密。
我们举一个例子: 假定现在要加密一些数据使用密钥‘12345’。利用rsa 公钥,使用rsa 算法加密这个密钥‘12345’,并把它放在要加密的数据的前面(可能后面跟着一个分割符或文件长度,以区分数据和密钥) ,然后,使用对称加密算法加密正文,使用的密钥就是‘12345’。当对方收到时,解密程序找到加密过的密钥,并利用rsa 私钥解密出来,然后再确定出数据的开始位置,利用密钥‘12345’来解密数据。这样就使得一个可靠的经过高效加密的数据安全地传输和解密。但并不是经过加密的数据就是绝对安全的,数据加密是肯定可以被破解的,但我们所想要的是一个特定时期的安全,也就是说,密文的破解应该是足够的困难,在现实上是不可能的,尤其是短时间内。
❷ 加密算法有几种基于什么原理
1、对称加密算法
对称腊答正加密算法用来对敏感数据等信息进行加密,常用的算法包括:
DES(Data Encryption Standard):数据加密标准,速度较快,适用于加密大量数据的场合。
3DES(Triple DES):是基于DES,对一块数据用三个不同的密钥进行三次加密,强度更高。
AES(Advanced Encryption Standard):高级加密标准,是下一代的加密算法标准,速度快,安全级别高;
算法原理
AES 算法基于排列和置换运算。
排列是对数据重新进行安排,置换是将一个数据单元替换为另一个。
AES 使用几种不同的方法来执行排列和置换运算。
2、非对称算法
常见的非对称加密算法如下:
RSA:由 RSA 公司发明,是一个支持变长密钥的公共密钥算法,需要加密的文件块的长度也是可变的;
DSA(Digital Signature Algorithm):数字签名算法,是一种标准的 DSS(数字签名标准);
ECC(Elliptic Curves Cryptography):椭圆曲线密码编码学。
算法原理——椭圆曲线上的难题
椭圆曲线上离散对数问题ECDLP定义如下:给定素数p和椭圆曲线E,对Q=kP,在已知P,Q 的情况下求出小于p的正整数k。
可以证明由k和P计算Q比较容易,而由Q和举行P计算k则比较困难。
将椭圆曲线轮悔中的加法运算与离散对数中的模乘运算相对应,将椭圆曲线中的乘法运算与离散对数中的模幂运算相对应,我们就可以建立基于椭圆曲线的对应的密码体制。
❸ AES加密算法原理
AES是分组密钥,算法输入128位数据,密钥长度也是128位。用Nr表示对一个数据分组加密的轮数(加密轮数与密钥长度的关系如表1所列)。每一轮都需要一个与输入分组具有相同长度的扩展密钥Expandedkey(i)的参与。由于外部输入的加密密钥K长度有限,所以在算法中要用一个密钥扩展程序(Keyexpansion)把外部密钥K扩展成更长的比特串,以生成各轮的加密和解密密钥。x0dx0a1.1圈变化x0dx0aAES每一个圈变换由以下三个层组成:x0dx0a非线性层——进行Subbyte变换;x0dx0a线行混合层——进行ShiftRow和MixColumn运算;x0dx0a密钥加层——进行AddRoundKey运算。x0dx0a① Subbyte变换是作用在状态中每个字节上的一种非线性字节转换,可以通过计算出来的S盒进行映射。x0dx0ax0dx0a② ShiftRow是一个字节换位。它将状态中的行按照不同的偏移量进行循环移位,而这个偏移量也是根据Nb的不同而选择的[3]。x0dx0ax0dx0a③ 在MixColumn变换中,把状态中的每一列看作GF(28)上的多项式a(x)与固定多项式c(x)相乘的结果。 b(x)=c(x)*a(x)的系数这样计算:x0dx0a*运算不是普通的乘法运算,而是特殊的运算,即 b(x)=c(x)·a(x)(mod x4+1) 对于这个运算 b0=02。a0+03。a1+a2+a3 令xtime(a0)=02。a0x0dx0a其中,符号“。”表示模一个八次不可约多项式的同余乘法[3]。x0dx0ax0dx0a对于逆变化,其矩阵C要改变成相应的D,即b(x)=d(x)*a(x)。x0dx0a④ 密钥加层运算(addround)是将圈密钥状态中的对应字节按位“异或”。x0dx0ax0dx0a⑤ 根据线性变化的性质[1],解密运算是加密变化的逆变化。
❹ 简要说说对称加密和非对称加密的原理以及区别是什么
对称加密的原理是数据发送方将明文(原始数据)和加密密钥一起经过特殊加密算法处理后,使其变成复杂的加密密文发送出去。接收方收到密文后,若想解读原文,则需要使用加密密钥及相同算法的逆算法对密文进行解密,才能使其恢复成可读明文。
非对称加密的原理是甲方首先生成一对密钥同时将其中的一把作为公开密钥;得到公开密钥的乙方再使用该密钥对需要加密的信息进行加密后再发送给甲方;甲方再使用另一把对应的私有密钥对加密后的信息进行解密,这样就实现了机密数据传输。
对称加密和非对称加密的区别为:密钥不同、安全性不同、数字签名不同。
一、密钥不同
1、对称加密:对称加密加密和解密使用同一个密钥。
2、非对称加密:非对称加密加密和解密所使用的不是同一个密钥,需要两个密钥来进行加密和解密。
二、安全性不同
1、对称加密:对称加密如果用于通过网络传输加密文件,那么不管使用任何方法将密钥告诉对方,都有可能被窃听。
2、非对称加密:非对称加密因为它包含有两个密钥,且仅有其中的“公钥”是可以被公开的,接收方只需要使用自己已持有的私钥进行解密,这样就可以很好的避免密钥在传输过程中产生的安全问题。
三、数字签名不同
1、对称加密:对称加密不可以用于数字签名和数字鉴别。
2、非对称加密:非对称加密可以用于数字签名和数字鉴别。