SHA - 加密算法简要介绍及JAVA实现
1.安全哈希算法(Secure Hash Algorithm)主要适用于数字签名标准 (Digital Signature Standard DSS)里面定义的数字签名算法(Digital Signature Algorithm DSA)。SHA家族的五个算法,分别是SHA-1、SHA-224、SHA-256、SHA-384,和SHA-512,由美国国家安全局(NSA)所设计,并由美国国家标准与技术研究院(NIST)发布;是美国的政府标准。
2.Hash,一般翻译做”散列”,也有直接音译为”哈希”的,就是把任意长度的输入,变换成固定长度的输出,该输出就是散列值。简单的说就是一种将任意长度的消息压缩到某一固定长度的消息摘要的函数。MD5与SHA1都是Hash算法,MD5输出是128位的(转换为16进制则为32个字符),SHA1输出是160位的(转换为16进制则为40个字符),MD5比SHA1快,SHA1比MD5强度高。
3.java代码实现
package com.yc.test;
import java.security.MessageDigest;
public class SHA {
//应用sha256算法让一个输入转变成256位的hash值
public static String applySha256(String input){
try {
MessageDigest digest = MessageDigest.getInstance("SHA-256");
byte[] hash = digest.digest(input.getBytes("UTF-8"));
StringBuffer hexString = new StringBuffer();
for (int i = 0; i < hash.length; i++) {
String hex = Integer.toHexString(0xff & hash[i]);
if(hex.length() == 1) hexString.append('0');
hexString.append(hex);
}
return hexString.toString();
}
catch(Exception e) {
throw new RuntimeException(e);
}
}
public static void main(String[] args) {
String sha = "jam";
for(int i= 0;i<10;i++){
System.out.println(SHA.applySha256(sha));
sha=SHA.applySha256(sha);
}
}
}
初步了解,自己做一下笔记记录一下