加密算法

非对称加密(不可互逆)

MD5

非对称加密算法。

优点:不可逆,压缩性,不容易修改,容易计算

缺点:穷举法可以破解

实现

  • String2MD5
public static String string2MD5(String text)  {
	 try {
		 	//获取摘要器 MessageDigest
	        MessageDigest messageDigest = MessageDigest.getInstance("MD5");
	        //通过摘要器对字符串的二进制字节数组进行hash计算
	        byte[] digest = messageDigest.digest(text.getBytes());
	
	        StringBuilder sb = new StringBuilder();
			 for (int i = 0; i < digest.length; i++) {
	           //循环每个字符 将计算结果转化为正整数;
	            int digestInt = digest[i] & 0xff;
	            //将10进制转化为较短的16进制
	            String hexString = Integer.toHexString(digestInt);
	            //转化结果如果是个位数会省略0,因此判断并补0
	            if (hexString.length() < 2) {
	                sb.append(0);
	            }
	            //将循环结果添加到缓冲区
	            sb.append(hexString);
		        }
		} catch (Exception e) {
            e.printStackTrace();
        } 
         //返回整个结果
        return sb.toString();
    }
  • File2MD5
 public static String file2MD5(File file) {
        String value = null;
        FileInputStream in = null;
        try {
            in = new FileInputStream(file);
            MappedByteBuffer byteBuffer = in.getChannel().map(FileChannel.MapMode.READ_ONLY, 0, file.length());
            MessageDigest md5 = MessageDigest.getInstance("MD5");
            md5.update(byteBuffer);
            BigInteger bi = new BigInteger(1, md5.digest());
            value = bi.toString(16).toUpperCase(Locale.ENGLISH);//转为大写
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            if (null != in) {
                try {
                    in.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        }
        return value;
    }

增加md5的安全性

  • 对字符串多次MD5加密
  • MD5加盐
    string+key(盐值key)然后进行MD5加密
    方式:
    • 用string明文的hashcode作为盐,然后进行MD5加密
    • 随机生成一串字符串作为盐,然后进行MD5加密

SHA

非对称加密算法。安全散列算法,数字签名工具

优点:破解难度高,不可逆

缺点:可以通过穷举法进行破解

RSA

非对称加密算法,最流行的公钥密码算法,使用长度可变的秘钥

优点:不可逆,既能用于数据加密,也可以应用于数字签名

缺点:RSA非对称加密内容长度有限制,1024位key的最多只能加密127位数据

对称加密(可以互逆)

DES,3DES

对称加密算法

优点:算法公开、计算量小、加密速度快、加密效率高

缺点:双方都使用同样密钥,安全性得不到保证

3DES是DES加密算法的一种模式,它使用3条64位的密钥对数据进行三次加密

AES

对称加密算法

优点:算法公开、计算量小、加密速度快、加密效率高

缺点:双方都使用同样密钥,安全性得不到保证

AES的出现本身就是为了取代DES的,AES具有比DES更好的安全性、效率、灵活性,所以对称加密优先采用AES。

Base64

算不上什么加密算法,只是对数据进行编码传输

XOR

异或加密:原字符与一个数值 k 进行异或运算得到结果 r ,则用 r 与 k 做异或运算即可还原到原字符

优点:两个变量的互换(不借助第三个变量),简单的数据加密

缺点:加密方式简单

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值