数据交互的加密算法

阅读: 评论:0

数据交互的加密算法
加密算法分类
加密算法介绍和应⽤
在项⽬中的使⽤讨论
加密算法分类
1. 不可逆加密算法 Hash算法(SHA-1、SHA-256、MD5)
2. 对称加密算法(DES、3DES、AES(AES-128|AES-256)
3. ⾮对称加密算法(RSA、DSA)
不可逆加密
SHA-1
原理:
该算法的思想是接收⼀段明⽂,然后以⼀种不可逆的⽅式将它转换成⼀段(通常更⼩)密⽂,也可以简单的理解为取⼀串输⼊码(称为预映射或信息),并把它们转化为长度较短、位数固定的输出序列即散列值(也称为信息摘要或信息认证代码)的过程,产⽣的输出是⼀个160位的报⽂摘要。
场景:
实现数字签名
浏览器验证
注:
数字签名的原理是将要传送的明⽂通过⼀种函数运算(Hash)转换成报⽂摘要(不同的明⽂对应不同的报⽂摘要),报⽂摘要加密后与明⽂⼀起传送给接受⽅,接受⽅将接受的明⽂产⽣新的报⽂摘要与发送⽅的发来报⽂摘要解密⽐较,⽐较结果⼀致表⽰明⽂未被改动,如果不⼀致表⽰明⽂已被篡改。
MD5
原理:
对MD5算法简要的叙述可以为:MD5以512位分组来处理输⼊的信息,且每⼀分组⼜被划分为16个32位⼦分组,经过了⼀系列的处理后,算法的输出由四个32位分组组成,将这四个32位分组级联后将⽣成⼀个128位散列值。
场景:
⼤容让⼤容量信息在⽤数字签名软件签署私⼈密钥前被“压缩”成⼀种保密的格式,⼀直性验证
各⼤型门户⽹站存储的⽤户密码的数据形式应该是HASH算法之后的形式,就是把⼀个任意长度的字节串变换成⼀定长的⼗六进制数字串 简单数据通信⾝份验证,安全访问认证
注:
常见32位,和16位,注意⼤⼩写
⽐较
对强⾏攻击的安全性:
最显著和最重要的区别是SHA-1摘要⽐MD5摘要长32 位。使⽤强⾏技术,产⽣任何⼀个报⽂使其摘要等于给定报摘要的难度对MD5是
2^128数量级的操作,⽽对SHA-1则是2^160数量级的操作。这样,SHA-1对强⾏攻击有更⼤的强度。
速度:
在相同的硬件上,SHA-1的运⾏速度⽐MD5慢。
对称加密
思路:
数据发信⽅将明⽂(原始数据)和加密密钥⼀起经过特殊加密算法处理后,使其变成复杂的加密密⽂发送出去。收信⽅收到密⽂后,若想解读原⽂,则需要使⽤加密⽤过的密钥及相同算法的逆算法对密⽂进⾏解密,才能使其恢复成可读明⽂。
特点:
加密和解密的密钥只有⼀个,相同
数据交互双⽅,密钥需同步
常见:
DES、3DES、AES(AES-128|AES-256)、RC2、RC4、RC5
BASE64编码
计算机中的数据都是⼆进制的,不管是字符串还是⽂件,⽽加密后的也是⼆进制的
很多算法加密后输出的都是byte[],⽽这个byte[]对我们显⽰的形式是不友好的(乱码),因为⼆进制⽂件包含很多⽆法显⽰和打印的字符 Base64是⼀种⼆进制编码⽅法,⼆进制到字符串的转换⽅法
原理
准备⼀个包含64个字符的数组:
[‘A’, ‘B’, ‘C’, … ‘a’, ‘b’, ‘c’, … ‘0’, ‘1’, … ‘+’, ‘/’]
对⼆进制数据进⾏处理,每3个字节⼀组,⼀共是3x8=24bit,划为4组,每组正好6个bit:
得到4个数字作为索引,然后查表,获得相应的4个字符,就是编码后的字符串
不⾜3的倍数,Base64⽤\x00字节在末尾补位
BASE64编码表
DES:
DES算法把64位的明⽂输⼊块变为64位的密⽂输出块,它所使⽤的密钥也是64位,其算法主要分为两步:
初始置换
其功能是把输⼊的64位数据块按位重新组合,并把输出分为L0、R0两部分,每部分各长32位,其置换规则为将输⼊的第58位换到第⼀位,第50位换到第2位......依此类推,最后⼀位是原来的第7位。L0、R0则是换位输出后的两部分,L0是输出的左32位,R0是右32位,例:设置换前的输⼊值为D64,则经过初始置换后的结果为:D8;R0=D57D49 (7)
逆置换
经过16次迭代运算后,得到L16、R16,将此作为输⼊,进⾏逆置换,逆置换正好是初始置换的逆运算,由此即得到密⽂输出。
常⽤分组模式
EBC模式、CBC模式、CFB模式、OFB模式、CTR模式
填充⽅式
NoPadding(不填充)、Zeros填充(0填充)、PKCS5Padding填充、PKCS7Padding填充
3DES:
相当于是对每个数据块应⽤三次DES加密算法。由于计算机运算能⼒的增强,原版DES密码的密钥长度变得容易被暴⼒破解;3DES即是设计⽤来提供⼀种相对简单的⽅法,即通过增加DES的密钥长度来避免类似的攻击,⽽不是设计⼀种全新的块密码算法。
逻辑实现:
具体实现如下:设Ek()和Dk()代表DES算法的加密和解密过程,K代表DES算法使⽤的密钥,P代表明⽂,C代表密⽂,这样:
3DES加密过程为:C=Ek3(Dk2(Ek1(P)))
3DES解密过程为:P=Dk1(EK2(Dk3(C)))
AES:
AES算法基于排列和置换运算。排列是对数据重新进⾏安排,置换是将⼀个数据单元替换为另⼀个。AES 使⽤⼏种不同的⽅法来执⾏排列和置换运算。 AES是⼀个迭代的、对称密钥分组的密码,它可以使⽤128、192 和 256 位密钥,并且⽤ 128 位(16字节)分组加密和解密数据。与公共密钥密码使⽤密钥对不同,对称密钥密码使⽤相同的密钥加密和解密数据。通过分组密码返回的加密数据的位数与输⼊数据相同。迭代加密使⽤⼀个循环结构,在该循环中重复置换和替换输⼊数据。
⾮对称加密
思路:
⾮对称加密算法需要两个密钥:公开密钥(publickey)和私有密钥(privatekey)。公开密钥与私有密钥是⼀对,如果⽤公开密钥对数据进⾏加密,只有⽤对应的私有密钥才能解密;如果⽤私有密钥对数据进⾏加密,那么只有⽤对应的公开密钥才能解密。因为加密和解密使⽤的是两个不同的密钥,所以这种算法叫作⾮对称加密算法。
公钥加密
1、⼄⽅⽣成⼀对密钥(公钥和私钥)并将公钥向其它⽅公开。
2、得到该公钥的甲⽅使⽤该密钥对机密信息进⾏加密后再发送给⼄⽅。
3、⼄⽅再⽤⾃⼰保存的另⼀把专⽤密钥(私钥)对加密后的信息进⾏解密。⼄⽅只能⽤其专⽤密钥(私钥)解密由对应的公钥加密后的信息。
4、在传输过程中,即使攻击者截获了传输的密⽂,并得到了⼄的公钥,也⽆法破解密⽂,因为只有⼄的私钥才能解密密⽂。
5、同样,如果⼄要回复加密信息给甲,那么需要甲先公布甲的公钥给⼄⽤于加密,甲⾃⼰保存甲的私钥⽤于解密。
私钥签名
有⼀对公钥A和私钥B。如果我⽤私钥加密⼀段数据(当然只有我可以⽤私钥加密,因为只有我知道B
是我的私钥),结果所有的⼈都看到我的内容了,因为他们都知道我的公钥是A,那么这种加密有什么⽤处呢?
但是H说有⼈冒充我给他发信。怎么办呢?我把我要发的信,内容是c,⽤我的私钥B,加密,加密后的内容是d,发给H,再告诉他解密看是不是c。他⽤我的公钥A解密,发现果然是c。这个时候,他会想到,能够⽤我的公钥解密的数据,必然是⽤我的私钥加的密。只有我知道我得私钥,因此他就可以确认确实是我发的东西。这样我们就能确认发送⽅⾝份了。这个过程叫做数字签名。当然具体的过程要稍微复杂⼀些。⽤私钥来加密数据,⽤途就是数字签名。
总结:
公钥和私钥是成对的,它们互相解密。
公钥加密,私钥解密。
私钥数字签名,公钥验证。
SSH免密码登录
图解:
Server A免登录到Server B:
在A上⽣成公钥私钥。
将公钥拷贝给Server B,要重命名成authorized_keys(从英⽂名就知道含义了)
Server A向Server B发送⼀个连接请求。
Server B得到Server A的信息后,在authorized_key中查,如果有相应的⽤户名和IP,则随机⽣成⼀个字符串,并⽤Server A的公钥加密,发送给Server A。
Server A得到Server B发来的消息后,使⽤私钥进⾏解密,然后将解密后的字符串发送给Server B。
Server B进⾏和⽣成的对⽐,如果⼀致,则允许免登录。
总之:A要免密码登录到B,B⾸先要拥有A的公钥,然后B要做⼀次加密验证。对于⾮对称加密,公钥加密的密⽂不能公钥解开,只能私钥解开。
⽐较:
⾮对称加密与对称加密相⽐,其安全性更好:
对称加密的通信双⽅使⽤相同的秘钥,如果⼀⽅的秘钥遭泄露,那么整个通信就会被破解。⽽⾮对称加密使⽤⼀对秘钥,⼀个⽤来加密,⼀个⽤来解密,⽽且公钥是公开的,秘钥是⾃⼰保存的,不需要像对称加密那样在通信之前要先同步秘钥。
⾮对称加密与对称加密相⽐,执⾏时间长
算法执⾏加密解密过程复杂,加密和解密花费时间长、速度慢,只适合对少量数据进⾏加密。
对称加密相⽐
加解密速度快,可⽤于⼤数据量的加密
密钥管理困难,需要密钥同步
数据交互⼀:

本文发布于:2023-05-05 22:19:55,感谢您对本站的认可!

本文链接:https://patent.en369.cn/patent/4/88717.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:加密   密钥   数据   公钥   对称   私钥   算法   信息
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2022 Comsenz Inc.Powered by © 369专利查询检索平台 豫ICP备2021025688号-20 网站地图