在软件开发,前后台数据传送经常使用信息摘要这类算法进行数据的加密。
MessageDigest 类 简介
MessageDigest类 位于 java.security.MessageDigest,提供引用程序一个信息摘要算法的功能,比如 SHA-1 或者 MD5 等等。 信息摘要算法是一种安全的单向hash方程式,可以将可变长度的数据转换成固定长度的hash code。
MessageDigest类的使用:
//简单的MessageDigest使用
MessageDigest md = MessageDigest.getInstance("SHA");
//使用特定的字节数据更新digest
md.update(byte[]);
//获取hsah code 二进制数组 ,此操作后digest将会被reset
md.digest();
信息摘要算法简介
数据摘要算法是密码学算法中非常重要的一个分支,它通过对所有数据提取指纹信息以实现数据签名、数据完整性校验等功能,由于其不可逆性,有时候会被用做敏感信息的加密。数据摘要算法也被称为哈希(Hash)算法、散列算法。·详情
特点
消息摘要算法的主要特征是,在单项的加密过程中一般不需要密钥,加密出来的密文无法反向解密 ,只有相同的消息经过相同的消息摘要算法能生成相同的密文。
应用
一般地,把对一个信息的摘要称为该消息的指纹或数字签名,信息摘要算法的主要用途是信息完整性校验,就好比我们买菜,肯定都希望称一下买的菜分量是否足够。
在计算机领域,我们也希望能知道别人传递的消息是否完整是否被篡改了,这里就用到信息摘要算法。
消息摘要算法常常用来保证传输消息的完整性和验证传输的消息是否被篡改。也就是通常所说的验签。
举个栗子:C/S下,客户端与服务器通信过程中常常伴有验签操作。通常发送password和account到服务器的过程是将password加密后 和account与其它提交参数形成提交参数String 然后拼接某些密钥或key值,再经过消息摘要算法形成 SignMsg 签名 一同提交给服务器,服务器首先会验证SignMsg的正确性。
分类
此类算法源于 CRC算法 (奇偶校验码、循环冗余算法),用于检测信息的完整性。在CRC的基础上产生了MD和SHA摘要算法家族,此后有产生了MAC带密钥的信息摘要算法。
- MD5算法: Message Digest Algorithm.目前主流算法,为第五版,之前为MD2,MD3,MD4
- SHA算法: Secure Hash Algorithm. 主要应用于数字签名标准(Digital Signature Standard)DSS下的数字签名算法(Digital Signature Algorithm)DSA。
- MAC算法: 带有密码信息的信息摘要算法,目前有HmacMD2,HmacMD5,HmacSHA-256。