数字摘要
Posted youzhongmin
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了数字摘要相关的知识,希望对你有一定的参考价值。
数字摘要原理
数字摘要也称为信息摘要,他是唯一对应一个消息或者文本的固定长度的值,他有单向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 |
... | ... | ... |
以上是关于数字摘要的主要内容,如果未能解决你的问题,请参考以下文章