SHA算法是在MD4的基础上演进而来的,通过SHA算法能够获得一个固定长度的摘要信息。
SHA算法系列有SHA-1(也成为SHA),SHA-224,SHA-256,SHA-384和SHA-512这五种算法,通常后面四中算法并称为SHA-2算法,它们都是以长度来命名的。
SHA与MD算法的不同之处主要在于摘要长度,SHA算法的摘要长度更长,安全性更高
SHA算法的长度说明
SHA算法实现(类似MD5的实现)
1、Java自带的MessageDigest类
注意:仅支持SHA-1,SHA-256,SHA-384和SHA-512
使用Java自带的MessageDigest类实现SHA和实现MD5一样,具体实现见例子代码
/** * SHA1实现消息摘要 */ public static byte[] SHA1() throws Exception{ MessageDigest sha1 = MessageDigest.getInstance("SHA"); //注意这里填SHA,而不是SHA1 byte[] result = sha1.digest("中国".getBytes("gbk")); System.out.println(result.length); return result; } /** * SHA1实现消息摘要 */ public static byte[] SHA256() throws Exception{ MessageDigest sha1 = MessageDigest.getInstance("SHA-256"); //其他的SHA2算法同理 byte[] result = sha1.digest("中国".getBytes("gbk")); System.out.println(result.length); return result; } |
2、Apache的消息摘要工具类org.apache.commons.codec.digest.DigestUtils实现
DigestUtils.sha256("中国".getBytes("gbk")); //其他的摘要算的函数名以算法名进行类推