• 各种主流加密算法解析


    最近开始做金融项目,接触了加密算法,在这里做个总结,加深认识。

    目前比较常用的加密算法总结起来就是单向加密和双向加密了,很少对吧,理解起来也不算很难。

    什么是单向加密?
    通俗来说,就是通过对数据进行摘要计算生成密文,密文不可逆推还原。算法代表:MD5、SHA、MAC、CRC等。

    什么是双向加密?
    而双向加密算法,与单向加密正好相反,就是可以把密文逆推还原成明文,双向加密又分为对称加密和非对称加密。

    什么是对称加密?
    采用单钥密码系统的加密方法,同一个密钥可以同时用作信息的加密和解密,这种加密方法称为对称加密,也称为单密钥加密。

    常用算法:DES、3DES、TDEA、Blowfish、RC2、RC4、RC5、IDEA、SKIPJACK等。

    对称加密的优点:加密计算量小、速度块,适合对大量数据进行加密的场景。

    对称加密的缺点:

    1、密钥传输问题:

    如上所说,由于对称加密的加密和解密使用的是同一个密钥,所以对称加密的安全性就不仅仅取决于加密算法本身的强度,更取决于密钥是否被安全的保管,因此加密者如何把密钥安全的传递到解密者手里,就成了对称加密面临的关键问题。(比如,我们客户端肯定不能直接存储对称加密的密钥,因为被反编译之后,密钥就泄露了,数据安全性就得不到保障,所以实际中我们一般都是客户端向服务端请求对称加密的密钥,而且密钥还得用非对称加密加密后再传输。)

    2、密钥管理问题:

    再者随着密钥数量的增多,密钥的管理问题会逐渐显现出来。比如我们在加密用户的信息时,不可能所有用户都用同一个密钥加密解密吧,这样的话,一旦密钥泄漏,就相当于泄露了所有用户的信息,因此需要为每一个用户单独的生成一个密钥并且管理,这样密钥管理的代价也会非常大。

    对称加密工作过程简要示意图:

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

    常用算法:RSA、Elgamal、背包算法、Rabin、D-H、ECC(椭圆曲线加密算法)等。

    非对称加密的优点:安全性更好。

    非对称加密的缺点:加密和解密花费时间长、速度慢,只适合对少量数据进行加密。

    非对称加密工作过程简要示意图:

    工作流程:

    1、乙方生成一对密钥(公钥和私钥)并将公钥向其它方公开。

    2、得到该公钥的甲方使用该密钥对机密信息进行加密后再发送给乙方。

    3、乙方再用自己保存的另一把专用密钥(私钥)对加密后的信息进行解密。乙方只能用其专用密钥(私钥)解密由对应的公钥加密后的信息。

    在传输过程中,即使攻击者截获了传输的密文,并得到了乙的公钥,也无法破解密文,因为只有乙的私钥才能解密密文。

    同样,如果乙要回复加密信息给甲,那么需要甲先公布甲的公钥给乙用于加密,甲自己保存甲的私钥用于解密。

    对称加密和非对称加密简要工作流程图:

    原文:https://blog.csdn.net/qq_34573534/article/details/90409232

  • 相关阅读:
    Vue2报错Already included file name 'xxx' differs from file name 'xxx' only in casing的解决方法
    npm init viteapp和npm init @vitejs/app的区别
    JVM配置参数
    Solr清空数据的简便方法
    Go查看和修改环境变量
    报错java.lang.IllegalStateException: WRITER的解决方法
    IDEA快速查找文件
    找不到import org.eclipse.jetty.webapp.WebAppContext的解决方法
    Go编译跨平台程序
    SpringBoot项目使用内嵌Jetty
  • 原文地址:https://www.cnblogs.com/Teacher-Lu/p/TeacherLu.html
Copyright © 2020-2023  润新知