加密算法分类

1、对称加密算法

1.1 说明

对称加密算法中,发信方利用加密密钥和特定的加密算法将明文运算处理,生成加密密文发送出去。
收信方收到密文后,使用加密用过的密钥及相同算法的逆算法对密文进行解密,得到可读明文。
在对称加密算法中,加密和解密使用同一个密钥。

基于“对称密钥”的加密算法主要有DES、AES、TripleDES、RC2、RC4、RC5和Blowfish等。

1.2 DES加密算法

DES加密算法是一种分组密码,以64位为分组对数据加密,它的密钥长度是56位,另外8位校验,加密解密用同一算法。
DES加密算法是对密钥进行保密,公开算法,包括加密和解密算法。
相对而言,计算量小、加密速度快、效率高;但是随着计算机系统能力的不断发展,DES的安全性不高,适用于普通数据加密。

1.3 AES加密算法

AES加密算法是密码学中的高级加密标准,采用对称分组密码体制,密钥长度的最少支持为128、192、256,分组长度128位。这种加密算法是美国联邦政府采用的区块加密标准,这个标准用来替代原先的DES,已经被多方分析且广为全世界所使用。
安全性比DES要高。

2、非对称加密算法

2.1 说明

非对称加密算法有两个密钥:公开密钥(publickey)和私有密钥(privatekey)。
公开密钥与私有密钥是一对,如果用公开密钥对数据进行加密,只有用对应的私有密钥才能解密;如果用私有密钥对数据进行加密,那么只有用对应的公开密钥才能解密。\

非对称加密中使用的主要算法有:RSA、Elgamal、背包算法、Rabin、D-H、ECC(椭圆曲线加密算法)等。

2.2 非对称加密应用描述

  1. A和B各自产生一对公钥和私钥。
  2. A的私钥保密,A的公钥告诉B;B的私钥保密,B的公钥告诉A。
  3. A要给B发送信息时,A用B的公钥加密信息,生成密文,密文只有B的私钥才能解密。
  4. A将密文发给B。
  5. B收到这个消息后,B用自己的私钥解密A的消息。其他人因为没有B的私钥无法解密。

2.3 ECC加密算法

ECC(Elliptic Curve Cryptosystems )椭圆曲线密码体制,美国SUN公司开发的,它的体制根据其所依据的难题一般分为三类:大整数分解问题类、离散对数问题类、椭圆曲线类。2000年10月,国际密码学界在德国ESSEN召开了学术大会(ECC2000),在这次会议上,来自世界各国的密码学家、数学家证明了对ECC算法的最快破解效率是高于亚指数级的,而RSA算法的最快破解效率是亚指数级的。ECC2000的召开进一步从学术上奠定了ECC算法的安全性,极大的推动了它在世界各国的应用。

2.4 RSA加密算法

RSA加密算法是目前最有影响力的公钥加密算法,并且被普遍认为是目前最优秀的公钥方案之一。RSA是第一个能同时用于加密和数宇签名的算法,它能够抵抗到目前为止已知的所有密码攻击,已被ISO推荐为公钥数据加密标准。RSA加密算法基于一个十分简单的数论事实:将两个大素数相乘十分容易,但想要对其乘积进行因式分解却极其困难,因此可以将乘积公开作为加密密钥。
具体可见:https://blog.csdn.net/qq_30062125/article/details/84298706

3、消息摘要算法

3.1 说明

消息摘要算法的加密过程不需要密钥,并且经过加密的数据无法被解密,目前可以被解密逆向的只有CRC32算法,只有输入相同的明文数据经过相同的消息摘要算法才能得到相同的密文。
消息摘要算法不存在密钥的管理与分发问题,适合于分布式网络上使用。

几乎所有的数字签名方案都要和快速高效的摘要算法(Hash函数)一起使用,当公钥算法与摘要算法结合起来使用时,便构成了一种有效地数字签名方案。
这个过程是:首先用摘要算法对消息进行摘要,然后在把摘要值用信源的私钥加密;
接收方先把接收的明文用同样的摘要算法摘要,形成“准签体”,然后再把准签体与用信源的公钥解密出的“签体”进行比较,如果相同就认为消息是完整的,否则消息不完整。
这种方法使公钥加密只对消息摘要进行操作,因为一种摘要算法的摘要消息长度是固定的,而且都比较“短”(相对于消息而言),正好符合公钥加密的要求。
这样效率得到了提高,而其安全性也并未因为使用摘要算法而减弱。

Hash算法:MD2、MD4、MD5、HAVAL、SHA、SHA-1、HMAC、HMAC-MD5、HMAC-SHA1

3.2 MD5加密算法

MD5为计算机安全领域广泛使用的一种散列函数,用以提供消息的完整性保护。
对MD5加密算法简要的叙述可以为:MD5以512位分组来处理输入的信息,且每一分组又被划分为16个32位子分组,经过了一系列的处理后,算法的输出由四个32位分组组成,将这四个32位分组级联后将生成—个128位散列值。
MD5被广泛用于各种软件的密码认证和钥匙识别上。MD5用的是哈希函数,它的典型应用是对一段信息产生信息摘要,以防止被篡改。MD5的典型应用是对一段Message产生fingerprin指纹,以防止被“篡改”。如果再有—个第三方的认证机构,用MD5还可以防止文件作者的“抵赖”,这就是所谓的数字签名应用。MD5还广泛用于操作系统的登陆认证上,如UNIX、各类BSD系统登录密码、数字签名等诸多方。

MD5用法说明

[root@node146 ~]#  md5sum --help
用法:md5sum [选项]... [文件]...
显示或检查 MD5(128-bit) 校验和。
若没有文件选项,或者文件处为"-",则从标准输入读取。

  -b, --binary          以二进制模式读取
  -c, --check           从文件中读取MD5 的校验值并予以检查
      --tag            create a BSD-style checksum
  -t, --text            以纯文本模式读取(默认)
  Note: There is no difference between binary and text mode option on GNU system.

The following four options are useful only when verifying checksums:
      --quiet          don't print OK for each successfully verified file
      --status         don't output anything, status code shows success
      --strict         exit non-zero for improperly formatted checksum lines
  -w, --warn           warn about improperly formatted checksum lines

      --help            显示此帮助信息并退出
      --version         显示版本信息并退出


# 查看单个文件md5
[root@node146 ~]# md5sum x-pack-core-6.4.0.jar 
d65b4d7412665c37a54b56c99c5c4c4e  x-pack-core-6.4.0.jar

# 批量校验
[root@node146 ~]# md5sum x-pack-core-6.4.0.jar Atlas-2.2.1.el6.x86_64.rpm  > md5.info
[root@node146 ~]# cat md5.info
d65b4d7412665c37a54b56c99c5c4c4e  x-pack-core-6.4.0.jar
380fee1cea3b17042eaa92b487e883c7  Atlas-2.2.1.el6.x86_64.rpm
[root@node146 ~]# md5sum -c md5.info
x-pack-core-6.4.0.jar: 确定
Atlas-2.2.1.el6.x86_64.rpm: 确定

3.3 SHA1加密算法

SHA1是和MD5一样流行的消息摘要算法。SHA加密算法模仿MD4加密算法。SHA1设计为和数字签名算法(DSA)一起使用。
SHA1主要适用于数字签名标准里面定义的数字签名算法。对于长度小于2^64位的消息,SHA1会产生一个160位的消息摘要。当接收到消息的时候,这个消息摘要可以用来验证数据的完整性。在传输的过程中,数据很可能会发生变化,那么这时候就会产生不同的消息摘要。SHA1不可以从消息摘要中复原信息,而两个不同的消息不会产生同样的消息摘要。这样,SHA1就可以验证数据的完整性,所以说SHA1是为了保证文件完整性的技术。
SHA1加密算法可以采用不超过264位的数据输入,并产生一个160位的摘要。输入被划分为512位的块,并单独处理。160位缓冲器用来保存散列函数的中间和最后结果。缓冲器可以由5个32位寄存器(A、B、C、D和E)来表示。
SHA1是一种比MD5的安全性强的算法。

sha1sum用法说明

[root@node146 ~]# sha1sum --help
用法:sha1sum [选项]... [文件]...
显示或检查 SHA1(160-bit) 校验和。
若没有文件选项,或者文件处为"-",则从标准输入读取。

  -b, --binary          以二进制模式读取
  -c, --check           从文件中读取SHA1 的校验值并予以检查
      --tag            create a BSD-style checksum
  -t, --text            以纯文本模式读取(默认)
  Note: There is no difference between binary and text mode option on GNU system.

The following four options are useful only when verifying checksums:
      --quiet          don't print OK for each successfully verified file
      --status         don't output anything, status code shows success
      --strict         exit non-zero for improperly formatted checksum lines
  -w, --warn           warn about improperly formatted checksum lines

      --help            显示此帮助信息并退出
      --version         显示版本信息并退出

# 查看sha1
[root@node146 ~]# sha1sum x-pack-core-6.4.0.jar 
f59aff19965dc219ece465a4658eead632a0d8b7  x-pack-core-6.4.0.jar

4、Base64编码说明

Base64加密算法是网络上最常见的用于传输8bit字节代码的编码方式之一,Base64编码可用于在HTTP环境下传递较长的标识信息。
例如,在JAVAPERSISTENCE系统HIBEMATE中,采用了Base64来将一个较长的唯一标识符编码为一个字符串,用作HTTP表单和HTTPGETURL中的参数。
在其他应用程序中,也常常需要把二进制数据编码为适合放在URL(包括隐藏表单域)中的形式。此时,采用Base64编码不仅比较简短,同时也具有不可读性,即所编码的数据不会被人用肉眼所直接看到。

[root@node146 ~]# echo -n test | base64
dGVzdA==

5、小结

在实际的操作过程中,我们通常采用的方式是:采用非对称加密算法管理对称算法的密钥,然后用对称加密算法加密数据,
既实现了加密速度快的优点,又实现了安全方便管理密钥的优点。
一般来说,密钥越长,运行的速度就越慢,应该根据的我们实际需要的安全级别来选择,一般来说,RSA建议采用1024位的数字,2048位安全性一般相当可靠了,ECC建议采用160位,AES采用128位。

  • 0
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值