加密算法介绍

  • 加密算法的原理是利用数学函数和密钥对数据进行变换,使得只有持有正确密钥的人才能恢复原始数据。

  • 加密算法的分类主要有对称加密算法和非对称加密算法两大类,以及Hash算法这种特殊的一类。对称加密算法使用相同的密钥进行加密和解密,速度快但需要安全地传输或保存密钥。非对称加密算法使用不同的公钥和私钥进行加密和解密,安全性高但速度慢。Hash算法不需要使用任何密钥,可以将任意长度的数据映射为固定长度的散列值,具有不可逆性和抗碰撞性。

  • 加密算法的应用广泛,涉及到网络通信、数据存储、数字签名、身份认证等领域。例如,在HTTPS协议中,通常会使用非对称加密算法来交换对称加密算法的会话密钥,然后使用对称加密算法来保护传输的数据。在数据库中,通常会使用对称加密算法或Hash算法来保护用户的敏感信息。在数字签名中,通常会使用非对称加密算法或Hash算法来验证消息的完整性和来源。

  • 加密算法的实现需要依赖于具体的编程语言和库。例如,在Java中,可以使用javax.crypto包提供的类和方法来实现各种对称加密算法和非对称加密算法。在Python中,可以使用PyCrypto或cryptography等第三方库来实现各种

  1. 单向HASH:使用一个函数将明文转换为固定长度的摘要,无法还原出原始明文,例如MD5、SHA1等。

  • MD5是一种128位的单向散列函数,由Ronald Rivest设计,1992年发布。它的特点是速度快,但安全性较低,已被攻破

  • SHA-1是一种160位的单向散列函数,由美国国家标准技术研究院(NIST)制定,1995年发布。它的特点是安全性较高,但速度较慢,也已被攻破

  • SHA-2是一种由NIST制定的SHA哈希算法系列,2001年发布。它包括SHA-224、SHA-256、SHA-384、SHA-512、SHA-512/224和SHA-512/256六种变体。它们的特点是安全性更高,但速度更慢

  • SHA-3是一种由NIST制定的新一代SHA哈希算法系列,2015年发布。它包括SHA3-224、SHA3-256、SHA3-384和SHA3-512四种变体。它们的特点是与前三种算法有不同的设计思路和结构,提供了更多的选择和灵活性

输出长度不同:md5输出128位(32个十六进制字符)的摘要;SHA1输出160位(40个十六进制字符)的摘要;SHA256输出256位(64个十六进制字符)的摘要;SHA512输出512位(128个十六进制字符)的摘要。

效率不同:一般来说,输出长度越长,算法越复杂,耗时越多。因此,在保证安全性的前提下,应该选择合适的算法。

目前推荐使用SHA-2或者SHA-3算法进行单向散列加密

  1. 对称加密:采用单钥密码的加密方法,同一个密钥可以同时用来加密和解密,这种加密方法称为对称加密,也称为单密钥加密。常用的单向加密算法:常用的算法有:DES、3DES、TDEA、Blowfish、RC2、RC4、RC5、IDEA、SKIPJACK等。

  • DES(Data Encryption Standard):数据加密标准,速度较快,适用于加密大量数据的场合;

  • 3DES(Triple DES):是基于DES,对一块数据用三个不同的密钥进行三次加密,强度更高;

  • AES(Advanced Encryption Standard):高级加密标准,是下一代的加密算法标准,速度快,安全级别高,支持128、192、256位密钥的加密;

加密解密的速度比较快,计算量小、加密效率高适合数据比较长时的使用

加密方和解密方使用同一个密钥,如果一方的秘钥被泄露,那么加密信息也就不安全了,容易被破解。另外,每对用户每次使用对称加密算法时,都需要使用其他人不知道的独一秘钥,这会使得收、发双方所拥有的钥匙数量巨大,密钥管理成为双方的负担,密钥管理麻烦。

  1. 非对称加密:与对称加密算法不同,非对称加密算法需要两个密钥:公开密钥(publickey)和私有密钥(privatekey)。公开密钥与私有密钥是一对,如果用公开密钥对数据进行加密,只有用对应的私有密钥才能解密;如果用私有密钥对数据进行加密,那么只有用对应的公开密钥才能解密。因为加密和解密使用的是两个不同的密钥,所以这种算法叫作非对称加密算法。

RSA算法 RSA是目前最有影响力的公钥加密算法,也是被普遍认为是目前最优秀的公钥方案之一。RSA算法是第一个能同时用于加密和数字签名的算法,也易于理解和操作。RSA是被研究得最广泛的公钥算法,从提出到现今的三十多年里,经历了各种攻击的考验,逐渐为人们接受,截止2017年被普遍认为是最优秀的公钥方案之一。比如国内的支付宝就是通过RSA算法来进行签名验证。它的安全程度取决于秘钥的长度,目前主流可选秘钥长度为 1024位、2048位、4096位等,理论上秘钥越长越难于破解,按照维基百科上的说法,小于等于256位的秘钥,在一台个人电脑上花几个小时就能被破解,512位的秘钥和768位的秘钥也分别在1999年和2009年被成功破解,虽然目前还没有公开资料证实有人能够成功破解1024位的秘钥,但显然距离这个节点也并不遥远,所以目前业界推荐使用 2048 位或以上的秘钥,不过目前看 2048 位的秘钥已经足够安全了,支付宝的官方文档上推荐也是2048位,当然更长的秘钥更安全,但也意味着会产生更大的性能开销。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值