数字摘要

数字摘要原理

数字摘要也称为信息摘要,他是唯一对应一个消息或者文本的固定长度的值,他有单向hash函数生成。生成的数字摘要可以对传输中的消息的完整性进行验证。数字摘要的特征如下:

  1、无论传入的消息有多长都会返回固定长度的信息。

  2、传入的消息不同,返回的数字摘要也不相同。但是相同的输入必定会产生相同的输出。

  3、由于消息摘要并不包含原文的完整信息,一次无法从摘要中恢复出原来的信息。

MD5

 MD5生成的摘要长度为128位,MD5的使用实例如下:

public static byte[] testMD5(String content) throws Exception{
    MessageDigest md = MessageDigest.getInstance("MD5");
    byte[] bytes = md.digest(content.getBytes("utf8"));
    return bytes;
    }

SHA

SHA-1算法生成的摘要长度为160位,由于生成的摘要越长,运算过程越复杂,运算速度越慢,安全度也更高。

SHA-1算法实例如下:

public static byte[] testSHA(String content) throws Exception{
    MessageDigest md = MessageDigest.getInstance("SHA-1");
    byte[] bytes = md.digest(content.getBytes("utf8"));
    return bytes;
    }

Base64编码

Base64编码不是一种加密算法,只是一种编码方法,因为可以通过固定的方法你想得到编码前的信息。Base64编码实例如下:

//编码方法
private static String byte2base64(byte[] bytes){
    BASE64Encode base64Encode = new BASE64Encode();
    return base64Encode.encode(bytes);
    }
//解码方法
private static byte[] base642byte(String base64){
    BASE64Decoder base64Decoder = new BASE64Decoder();
    return base64Decoder.decodeBuffer(base64);
}

 彩虹表破解Hash算法

该算法是将各种加密算法、生成的密文和明文构成一张表格,可以通过该表格中的密文找到对应的明文。彩虹表算法图如下:

密文 Hash算法 明文
XX MD5 XX
XX SHA XX
XX SHA XX
XX MD5 XX
... ... ...

猜你喜欢

转载自www.cnblogs.com/youzhongmin/p/9260859.html