数据加密,数字签名 简介。

 [原创文章,如有雷同,必是巧合或抄我的-。-若无许可,随便转载。]

文内提及到的常见加密详细算法方式请自行百度。

数据加密发展  计算机出现之前:置换表,多置换表,置换数据位置。

                            计算机出现之后:字节循环移位,xor或异或操作。

名词解释:

       密码:           一组含有参数的变换。

       明文:           加密前的原始数据。

       密文:           加密后的数据。

       密钥:           参与变换的参数。

       加密算法:    进行数据变换的函数。

校验码:       有些时候我们需要知道数据是否被修改或被破坏,那么我们就需要产生一些校验码,然后将这些校验码填充到真正的数据流中,每次我们进行数据操作之前,可以对这些校验码进行检查,这样就可以保证其安全性。例如:病毒感染的文件可以有效防治。

CRC           循环冗余校验。它对每一个数据块进行位循环移位和XOR操作产生得到一个16位或32位的一个校验和。这样的话,无论有数据丢失还是改变都一定会导致校验码出错,对于病毒感染也很有效。现在已成了一种标准。

 

基本说明:

一个数据加密算法应当有这样一个能力:制定一个密码或密钥,用它可以加密明文,不同的密码或者密钥,可以产生不同的密文(暗文)。密钥都是可以被破译的,仅是时间上的不可能性。

一个数据加密算法,需要考虑的是进行算法变换,密钥子密钥(公钥私钥)的计算消耗,计算时的空间占用,安全性,密钥长度,密文大小 这些方面。

 

数据加密技术分类

古典算法,对称算法,非对称算法

       古典算法:替代密码,换位密码。

       对称算法:就是加密和解密都用同一套密钥。

              对称算法可分为序列密码和分组密码。其中序列密码每次加密一位或者以字节的明文,也称为流密码。分组密码是将明文分组为固定长度的组,然后使用密钥算法对每一块进行加密,结果,输出的也将是固定长度的密文。

       非对称算法:加密和解密时使用不同的密钥。加密的密钥为公钥,解密时需使用公钥对应的私钥。若发送方希望只有收信方可解密,那么发信方必须先知道收信方的公钥,然后使用收信方的公钥对数据进行加密,收信方使用自己的私钥进行解密密文。公钥私钥并不明确,都可进行加密,而使用另外一个进行解密。

       不可逆算法。不需要密钥,可直接将数据经过算法处理得到密文,密文不可能被解密。

       分别常见的有:    对称DES,ADEA,后来的AES

非对称RSADSAECC

不可逆MD5,SHSSHA

 

       特殊分类方式:

       若明文和密钥确定,则密文确定,则称为确定型密码体制。

       若明文和密钥确定,密文不唯一确定,然后根据客观随机因素从一个密文集合中选择一个,则称为概率密码体制。

 

常见数据加密技术:

DES:对称加密算法。全称是Data Encryption Standard 美国数据加密标准。

S-盒:算法结晶所在。推导过程未知。

弱密钥:几个减弱DES安全系数的密钥。避免使用。

它是一种对二元数据进行的加密算法。数组分组长度为64位。密文分组的长度也是64位。密钥长度为64位(其中有效长度为56位,剩余8位作为奇偶校验)DES的整个体系是公开的,其安全性完全靠密钥的保密。

加密解密速度快。其扩展算法有 三重DESIDEARC5RC6BlowfishCASTRC2

1:将明文分割为64位的一个单元,然后,对每个单元进行处理,若不足64位,则填充0

2:将明文单元进行一个初始IP置换

3:将置换后的单元分割为左右半部分,每部分32位。

4:对每个部分进行16轮迭代的乘积变换。(将数据和密钥结合起来,注意,密钥会在每一轮迭代时生成一个对应的子密钥进行乘积变换)

516轮迭代之后,两个部分再连接起来,进行一个初始逆置换IP-1,得到密文。

 

AES:比DES更安全高效。对称加密算法。效率比3DES高,安全性略高于3DES。全称为 Advance Data Encryption Standard

       是基于128位(16字节)分组的对称加密算法。密钥可分为128.192256位三种。密钥轮数分别为101214次。一开始,我们预准备一个替换表,用于中途对密钥进行替换。

       加密步骤为:

       1:将明文拷贝到4*4字节的矩阵State中。

       2:用第一轮的密钥与State进行异或运算。

       3:使用替换表对密钥进行替换。

4:对State进行移位操作。

5:对State进行混合操作。

6:用下一轮的密钥对State进行异或操作。返回第3步。直至使用完所有轮数。

7:输出State.

特殊点:

若明文字节数除以16字节不为0,剩余n字节,则填充16-n个字节,每个字节内填充的数也为 16-n ;

若明文字节数除以16字节正好为0,则必须增加一个16字节的组,该组内每个字节内容必须填写16.

AES安全系数总结:

       密钥长度 密钥数量   知密文后所需要时间  知明文和密文后所需要时间

       32           4.3*10E9               35.8                         2.15毫秒

       56           7.2*10E16             1142                        10小时

       128         3.4*10E38             10E24                      5.4*10E18

       168         3.7*10E50             5.9*10E36                5.9*10E30

RSA:非对称加密算法。它使用了两个非常大的素数来生成公钥和私钥。加密算法比慢,不适合进行大量数据的加密。

它的密钥是两个非常大的素数相乘得到其中一个密钥,通过这两个素数进行其他一些算法得到另外一个密钥。将公布一个密钥作为公钥,留一个作为私钥。

若一个密钥被分解出得到两个素数,则RSA被击破。

为安全起见,建议两个素数相差不大。

椭圆曲线ECC算法:非对称加密算法。

它的密钥是通过一个椭圆曲线运算得到的。它的加密强度,执行速度都更好,并且密钥长度小,计算空间小,比RSADSA强。

PGP:非对称加密算法。使用公钥来加密一个随机生成的密钥,然后使用该密钥再去加密数据。所以要解密数据要先用私钥解密得到该密钥。

背包密码:非对称加密算法。

McEliece密码:非对称加密算法。

Rabin:非对称加密算法。

三重DES:使用三个(或两个)不同密钥对数据块进行三次(或两次)加密。强度系数高,但效率降低。

它分为四种方式:

DES-EEE3,使用三个密钥,顺序对数据进行三次加密变换。

       DES-EDE3,使用三个密钥,对数据进行加密,错误解密,加密变换。

       DES-EEE2,使用三个密钥,其中K1=K3(相当于两个密钥)对数据进行顺序三次加密。

       DES-EDE2,使用三个密钥,其中K1=K3(相当于两个密钥)对数据进行加密,错误解密,加密变换。

RC5: 它是一种将明文分组长(W位,W必须为2的倍数次),密钥长(R字节),迭代轮数(B次)进行分组迭代的密码。它以RC5-w/r/b表示。推荐使用RC5-32/12/16

1:算法形式简单,运算速度快。

2:能适应不同字长的明文

3:加密轮数可变化,可调整加密速度和安全性。

4:密钥长度可变化,可调节安全性。

5:空间消耗度低。

6:对数据进行了位循环移位,增强了抗攻击能力。

IDEA:它使用了128位密钥,安全性更高,实现上也快了很多。

它将64位明文分割为4个子单元,一个子单元大小为16位。

它进行了8轮的重复运算,每轮运算有6个不同的子密钥参与运算,最后又进行了一次变换运算。

它将128位的密钥分割为8份子密钥,每份16位,再进行位移运算得到新的子密钥。

 

散列和数字签名

       散列很类似于加密,不同的是,散列不需要密钥。散列的目的是将一个接近无穷空间内的信息映射到一个有维空间内。虽然可能出现散列值碰撞,但这个概率应当小到接近不存在。

散列函数的要求:

1:散列函数必须能够对任意长度的明文产生一个固定长度的密文值。

2:不允许任何一个明文在散列后得到的密文和原明文一致。

3:任意两个不同的明文,散列后得到的密文必须不一致。

 

数字签名就是对数据进行密码变换后得到的一些数据,这些数据负责让接受方确认数据的来源以及确认数据的完整性。

注意!数字签名和加密是不冲突的。

举例:Wang 要给 FK 一个信件,不希望被别人看到,那么FK要开放一个公钥给WangWang拿到公钥进行加密,密文由FK收到后使用私钥进行解密,就得到了明文,这是加密。

Wang发送给FK的信件,FK需要确认是由Wang发送的,并且要保证数据的完整性,那么就需要Wang在发送信件前,使用密钥进行信件签名,并且先将公钥提供给FKFK使用公钥解密文件,检查签名是否又由Wang所发,虽然两个从加密技术上可以完全一致,均使用非对称加密即可,但意义和用途不同。

 

MD5:(Message-digest algorithm 5)消息摘要算法

是比MD4更安全的散列。

MD5进行4轮的运算。计算后得到的散列摘要为128位。

1:补位。

       将明文长度补充到 length() 除以 512 得到 448 位。若不足,则先补11,其余位补0.

2:补数据

       将明文原始长度以一个64位数表示,填充到最后,则明文长度将成为512位倍数。

3:初始化MD5参数

       MD5的部分默认标志参数。

4:主要变换过程

       4次循环,进行位与或异或等操作得到结果。

SHA

Secure Hash Fuction 安全散列函数。也是进行4轮的运算,计算后得到的散列摘要为160位,保存在532位的数据中。

计算方式过程与MD5极其类似,但变换过程略有不同,默认标志参数也有不同。

 

数字签名的算法和非对称加密算法通常一致。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值