ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

加密算法总结

2020-03-05 21:36:03  阅读:245  来源: 互联网

标签:总结 加密 String SHA 算法 str 私钥 加密算法


文章目录

1、前言

本文主要总结了常用的一些加密算法,对称加密算法和非对称加密算法以及数字签名

2、对称加密和非对称加密

  • 对称加密算法:该算法又称为私钥加密、共享密钥加密。主要是加密和解密都用同一个密钥进行。一旦密钥落入别人的手中,该算法就被破解了。主要的加密算法有DES算法、Blowfish算法、RC5算法和IDEA算法。其示例如图所示,
    encrypt-symmetric-key.jpg

  • 非对称加密算法:该算法又叫公开密钥加密算法。该算法需要两个密钥,一个公钥,一个私钥。公钥用做加密,私钥用做解密。使用公钥加密后得到的密文,只有相对应的私钥才能解密得到原来的明文。公钥可以公开,可任意向外发布;私钥不可以公开,必须由用户自行严格秘密保管,绝不透过任何途径向任何人提供,也不会透露给被信任的要通信的另一方。如果任何人使用公钥加密明文,得到的密文可以透过不安全的途径(如网络)发送,只有对应的私钥持有者才可以解密得到明文;其他人即使从网络上窃取到密文及加密公钥,也无法(在数以年计的合理时间内)解密得出明文。常见的算法有RSA算法等。其示例如图所示:
    encrypt-asymmetric-encryption.jpg

3、数字签名

通常我们使用公钥加密,用私钥解密。而在数字签名中,我们使用私钥加密(相当于生成签名),公钥解密(相当于验证签名)。签名方法:我们可以直接对消息进行签名(即使用私钥加密,此时加密的目的是为了签名,而不是保密),验证者用公钥正确解密消息,如果和原消息一致,则验证签名成功。但通常我们会对消息的散列值签名,因为通常散列值的长度远小于消息原文,使得签名(非对称加密)的效率大大提高。注意,计算消息的散列值不是数字签名的必要步骤。
数字签名.jpg

4、常见算法

4.1 MD5摘要算法

一种被广泛使用的密码散列函数,可以产生出一个128位(16字节)的散列值。是不可逆的算法。

//使用apache的DigestUtils类来计算MD5
public static String getMD5(String str){
        return DigestUtils.md5Hex(str.getBytes());
    }

4.2 SHA算法

和MD5算法类似,SHA算法也是一种信息摘要算法,又名安全散列算法(Secure Hash Algorithm)。SHA家族的五个算法,分别是SHA-1、SHA-224、SHA-256、SHA-384,和SHA-512。其Java实现如下

import org.apache.commons.codec.digest.DigestUtils;

public class DigestService {

    public String getSHA1(String str){
        return DigestUtils.sha1Hex(str);
    }

    public String getSHA256(String str){
        return DigestUtils.sha256Hex(str);
    }

    public String getSHA384(String str){
        return DigestUtils.sha384Hex(str);
    }

    public String getSHA512(String str){
        return DigestUtils.sha512Hex(str);
    }

}

标签:总结,加密,String,SHA,算法,str,私钥,加密算法
来源: https://blog.csdn.net/zhanghanlun/article/details/104684586

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有