设为首页 收藏本站
查看: 1756|回复: 1

[资源发布] 常用算法简介

[复制链接]
累计签到:224 天
连续签到:4 天
发表于 2019-11-26 11:47:57 | 显示全部楼层 |阅读模式
常用算法简介
一、摘要算法
摘要算法也称哈希算法,不可逆算法,主要有MD家族(MD5)、SHA家族(SHA256)、CRC32等。
1.Md5
Message-Digest Algorithm 5(信息-摘要算法),目前该系列中最常用的算法之一,抗分析和抗差分方面比Md4表现更好。
主要通过将消息分解成512-bit大小然后求余、取余、调整长度、与链接变量进行循环运算,得出固定长度128-bits的算法。
当然之前已被证明可碰撞,但考虑到碰撞概率较低,结合实际情况使用,可用于数据篡改校验以及敏感ID数据表示,较高安全场景不适用。

2.Sha1-Sha2
安全哈希算法(Secure Hash Algorithm)
速度较慢,不适合大文件签名,但是安全性比Md5要高。
SHA-1是160位的哈希值,运算过程与MD5类似,步骤要多,但是原始报文长度不能超过2的64次方。
而SHA-2有多种位值,主要包含SHA256、SHA384、SHA512。
SHA家族在SSL行业中使用较多,目前已经切换到SHA2,其中最受欢迎的是SHA-256,而SHA512支持度不高,SHA2预计有效期为5年左右,届时会升级SHA3。

3.Hmac
HMAC,全称为“Hash Message Authentication Code”,中文名“散列消息鉴别码”,是基于密钥的 Hash 算法的认证协议。它用公开函数和密钥产生一个固定长度的值作为认证标识,用这个标识鉴别消息的完整性,它是对HASH算法的补充。
优点:
可以保持散列函数原有的性能不退化。
源码是公开和通用的,直接与常用底层Hash算法结合使用,Hash算法更换也较方便(现在都有HmacMd5,HmacSha等实现)。
安全性在摘要算法上增加了一步密钥破解的难度。

4.CRC32
32位循环冗余校验多项式,计算规则比较简单,校验码较短,主要用于通信数据校验,碰撞率较高,一般我们可以用于简单取模操作。

Hash破解方式:
1)暴力破解,也就是穷举法,时间换空间,需要消耗大量资源和时间,仅适合短密码碰撞。
2)字典法,其实也是暴力破解的变种,空间换时间,事先生成各种短密码的md5表以备碰撞查询。
3)彩虹表,使用hash链碰撞方式,在时间和空间上的一种折中,使用小于字典表的存储,小于暴力破解的时间。
4)差分攻击,王老师提出对md5进行破解的方式,通过修改相应比特位的方法来达到满足这一系列充分条件,貌似只需要测试2^37条随机消息,即可找到碰撞消息。

然而针对破解方法,我们只需要使用Hmac算法,保护好认证码,破解难度就提高很多了。


几种摘要算法对比:

算法        摘要长度(字节)        速度        安全性(当前碰撞复杂度)        计算规则        应用场景
MD5        32        较快(1)        较高(3)
分组、替换补位、轮转
互联网应用数据、文件传输完整性验证、隐私ID保护
SHA1        40        一般(2)        较高(2)        分组、替换补位、轮转
文件传输完整性验证、CA数字证书(已淘汰)
SHA256        64        较慢(3)        最高(1)        分组、替换补位、轮转
文件传输完整性验证、CA数字证书(正使用)
CRC32        8        一般(2)        较低(5)        多项式除法        本地文件简单校验、网络底层数据传输完整性校验

二、转码算法1.Base64
Base64并不是一种加密算法,而是一种转码算法。它把3个8位字节转化为4个6位区块再补零到8位,用这种方式可将有效值控制在6个比特位,即可表示可见的a-zA-Z0-9+/,=补位,它的名字的由来,即“基于64个字符”之意。它计算速度非常快,既不能用作数据安全加密也不能用于一致性校验。
为什么Base64使用广泛,如加密算法经常用base64输出结果、网页嵌入小图片、数据传输等,主要原因是不可见字符(乱码)会在某些传输设备、某些转换过程会丢失数据,这里补充一个低级错误场景:

byte[] bs=new byte[]{-62, -33, -114, 45};
System.out.println(Arrays.toString(new String(bs,"UTF-8").getBytes("UTF-8")));
//我们得到的是[-17, -65, -67, -33, -114, 45],如果用ISO8859_1单字节字符集或者Base64字符就不会这样,因为UTF-8、GBK等字符集是变长多字节字符集,在字节转字符时转码失败会导致字节丢失。​


这里将Base64作为转码代表拿出来只是为了区分加密和转码的概念。
三、可逆加密算法

1.对称加密算法(AES)
Advanced Encrytion Standard(高级加密标准)
加密方与解密方使用同一组密钥,即对称加密。
在之前我们有用过DES算法,主要是将64位的明文输入块变为64位的密文输出块,再到后面3DES算法使用3条64位的密钥对数据进行三次加密,被广泛的应用。
直到AES出现,AES算法基于几种不同的排列和置换运算,它可以使用128、192和256位密钥,并且用128位(16字节)分组加密和解密数据,拥有更高的密钥长度和安全性。
注意:java中默认最多使用128位密钥,如果要使用AES256,则需要下载添加local_policy.jar 和US_export_policy.jar到security

2.非对称加密算法(RSA)
算法取名于三位发明人姓名首字母,RSA算法基于一个十分简单的数论事实:将两个大质数相乘十分容易,但是想要对其乘积进行因式分解却极其困难,因此可以将乘积公开作为加密密钥。
RSA的公钥用于加密,私钥用于解密,即称非对称加密。
RSA加密安全级别极高,但是性能不高,一般不适合长文本加密,可以和AES结合使用,AES加密消息正文,RSA提供密钥分配安全保障。

对称加密算法对比:
名称
密钥长度
运算速度
安全性
资源消耗
DES
56位
较快


3DES
112位或168位



AES
128、192、256位




非对称算法对比:
名称
安全性(相同密钥长度)
签名速度
验证速度
资源消耗
应用场景
RSA




数字证书认证,实现较为简单,成熟度较高。
ECC
较高



数字证书认证,实现较为复杂,成熟度不高,将来可能替代RSA

四、SSL案例结合
网络通信主要有三大风险:
1)窃听风险
2)篡改风险
3)冒充风险
而SSL(安全传输层协议)就是专门为解决这些问题应运而生的。
通过SSL加解密过程分析,我们可以了解各类算法在解决三大风险问题时扮演什么角色。
假设S(服务端)、C(客户端)两方需要进行安全通信传输数据。
SSL包括单向认证(C确认S身份)、双向认证(双方确认身份),这里分析一下单向认证的过程。

主要来看四次握手:
      1.1 C发出请求,提供协议版本、随机数1、支持的加密算法和压缩算法。

      1.2 服务端S响应C的请求,确认协议版本和要使用的加密算法、返回服务器证书(CA认证过的公钥)和随机数2。

      1.3 C再次回应,提供公钥加密后的随机数3、以及内容hash校验值,并通知开始使用约定加密方法和消息秘钥发送。

      1.4 S最后回应。

简单来说,整个通信过程主要归纳为三件事
      1.1 C向S索要公钥并且通过CA验证。主要是初始化加密通信的上下文,获得非对称加密的加密条件(算法选取、公钥获取),并用CA提供的数字签名验证证书是否可信,防止身份冒充。
      1.2 双方通过三次随机码生成对话密钥。非对称加密以及随机码动态密钥生成算法保证了对话密钥的绝对安全性。
      1.3 双方采用对话密钥加密通信内容。使用DES、AES对称加密,相对轻量的算法,保证了杜绝了通信内容窃听的可能性。

在SSL协议中,三类算法职责非常明确,非对称加密算法保证对称密钥安全,对称加密算法保证通信主体内容不被破解,摘要算法保证内容不被篡改


运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-988948-1-1.html 上篇帖子: 没有了 下篇帖子: 没有了
累计签到:224 天
连续签到:4 天
 楼主| 发表于 2019-11-26 11:48:10 | 显示全部楼层
666666666666

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表