常见哈希算法的总结,对称式加密与非对称式加密的对比

哈希算法:

概述: 哈希算法又称为摘要算法。

作用:对任意一组输入数据进行计算,得到一个固定长度的输出摘要。

目的:为了验证原始数据是否被篡改。

特点:  1.相同的输入一定得到相同的输出;  

             2.不同的输入大概率得到不同的输出。

Java字符串的hashcode()就是一个哈希算法,输入任意字符串,输出固定的4字节int整数。

            例子:

                当覆写equals()方法时我们必须正确覆写hashcode()方法。

哈希碰撞:

碰撞是不能避免的,因为哈希算法是把一个无限的输入集合映射到一个有限的输出集合,必然会产生碰撞。

安全的哈希算法是满足碰撞概率低并且不能猜测输出。

常用的哈希算法:

哈希算法的输出长度越长,就越难产生碰撞,也就越安全。

 以MD5算法为例,看看如何对输入计算哈希:(代码实现如下)

代码运算的结果为:

 哈希算法的用途:

1.校验下载文件

2.存储用户密码

3.SHA-1(和MD5完全一样,只需要把算法名称改为SHA-1)

小结:

1.哈希算法可用于验证数据完整性,具有防篡改检测的功能。

2.常用的哈希算法有MD5,SHA-1等。

3.用哈希算法存储口令时要考虑彩虹表的攻击。

 

                          对称式加密与非对称式加密的对比

概述:

对称加密:用同一个密钥对密文进行加密和解密。

非对称加密:只有同一个公钥-私钥对才能正常加解密,公钥对密文进行加密,私钥对密文进行解密。

常使用的对称加密算法

 DES:由于密钥长度过短,可以在短时间内被暴力破解,所以已经不安全了。

AES:是目前最广泛的加密算法,比较常见工作模式为ECB模式和CBC模式。

ECB模式:是使用一个固定的16字节长度的密钥,所以是最简单的AES加密模式。(代码实现如下)

CBC模式:时使用一个32字节长度的密钥,并且其中混入了一个IV随机参数,这样对于同一份明文,每次生成的密文都不同。(代码实现如下)

非对称加密的优点:对称加密需要协商密钥,而非对称加密可以安全地公开各自的公钥,在N个人之间通信的时候:使用非对称加密只需要N个密钥对,每个人只管理自己的密钥对。而使用对称加密需要则需要N*(N-1)/2个密钥,因此每个人需要管理N-1个密钥,密钥管理难度大,而且非常容易泄漏。
非对称加密的缺点:运算速度非常慢,比对称加密要慢很多。

以RSA算法为例:密钥长度有 256/512/1024/2048/4096等不同长度,密钥长度越长,密码强度越大,当然计算速度也越慢。(RSA算法代码实现)

 代码结果实现:

小结:

1.对称加密算法加密和解密使用的是同一个密钥。

2.非对称加密算法在加密和解密过程中使用的是一对密钥,公钥进行加密,私钥进行解密。 

 

  • 172
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值