1、 一般地,只要输入的消息不同,对其进行摘要以后产生的摘要消息也必不相同;但相同的输入必会产生相同的输出。 消息摘要函数是无陷门的单向函数,即只能进行正向的信息摘要,而无法从摘要中恢复出任何的消息,乃至根本就找不到任何与原信息相关的信息。 好的摘要算法,无法找到两条消息,是它们的摘要相同。现有的消息摘要算法消息摘要算法包括MD、SHA和MAC三大系列,常常利用于验证数据的完整性,是数据签名算法的核心算法。MAC与MD和SHA不同,MAC是含有密钥的散列函数算法,咱们也常把MAC称为HMAC。JDK对消息摘要算法的支持JDK6支持MD2/MD5/SHA/SHA256/SHA384/SHA512/H
2、macMD5/HmacSHA1/ HmacSHA256/HmacSHA384/HmacSHA512利用到十六进制工具类 见:java byte数组与十六进制字符串互转MD和SHA系列的java实现:Java代码1.import2.import3./*4.*referenceapachecommons6.7.supportMD2/MD5/SHA/SHA256/SHA384/SHA5128.authorAub9.10.*/11.publicclassDigestUtils12./*13.按照给定摘要算法创建一个消息摘要实例14.15.paramalgorithm16.摘要算法名17.return消
3、息摘要实例18.seeMessageDigest#getInstance(String)19.throwsRuntimeException20.当link发生时21.22.staticMessageDigestgetDigest(Stringalgorithm)23.try24.return(algorithm);25.catch(NoSuchAlgorithmExceptione)26.thrownewRuntimeException();27.28.29.30.获取MD531.32.33.34.35.36.privategetMd5Digest()37.getDigest(MD5);38.
4、39.40.SHA-141.42.43.44.45.46.getShaDigest()47.SHA48.49.50.SHA-25651.52.53.54.55.56.getSha256Digest()57.SHA-25658.59.60.SHA-38461.62.63.64.65.66.getSha384Digest()67.SHA-38468.69.70.SHA-51271.72.73.74.75.76.getSha512Digest()77.SHA-51278.79.80.利用MD5消息摘要算法计算消息摘要81.82.data83.做消息摘要的数据84.消息摘要(长度为16的字节数组)85
5、.86.publicbyteencodeMD5(bytedata)87.getMd5Digest().digest(data);88.89.90.91.92.93.94.消息摘要(长度为32的十六进制字符串)95.96.StringencodeMD5Hex(byte97.(encodeMD5(data);98.99.100.利用SHA-1消息摘要算法计算消息摘要101.102.103.104.SHA-1消息摘要(长度为20的字节数组)105.106.encodeSHA(byte107.getShaDigest().digest(data);108.109.110.111.112.113.114
6、.SHA-1消息摘要(长度为40的十六进制字符串)115.116.encodeSHAHex(byte117.(getShaDigest().digest(data);118.119.120.利用SHA-256消息摘要算法计算消息摘要121.122.123.124.SHA-256消息摘要(长度为32的字节数组)125.126.encodeSHA256(byte127.getSha256Digest().digest(data);128.129.130.131.132.133.134.SHA-256消息摘要(长度为64的十六进制字符串)135.136.encodeSHA256Hex(byte137
7、.(encodeSHA256(data);138.139.140.利用SHA-384消息摘要算法计算消息摘要141.142.143.144.SHA-384消息摘要(长度为43的字节数组)145.146.encodeSHA384(byte147.getSha384Digest().digest(data);148.149.150.151.152.153.154.SHA-384消息摘要(长度为86的十六进制字符串)155.156.encodeSHA384Hex(byte157.(encodeSHA384(data);158.159.160.利用SHA-512消息摘要算法计算消息摘要161.162.
8、163.164.SHA-512消息摘要(长度为64的字节数组)165.166.encodeSHA512(byte167.getSha512Digest().digest(data);168.169.170.171.172.173.174.SHA-512消息摘要(长度为128的十六进制字符串)175.176.encodeSHA512Hex(byte177.(encodeSHA512(data);178.179.参考下载地址:系列的java实现3.import4.import5.import6.import7.import8./*HmacHmacMD5/HmacSHA/HmacSHA256/HmacSHA384/HmacSHA51211.13.publicHmac按照给定密钥生成算法创建密钥密钥算法密钥getHmacKey(Stringalgorithm)ppend(,()-1);();voidmain(Stringargs)31.ength();=Mac数据;加密前数据:string:+data);byte:+showByteArray();36.ength();加密后数据:+;hexStr:+(encodeData);41.
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1