Java SHA 哈希算法实例[可直接用]

来源:互联网 发布:哪个软件音质最好 编辑:程序博客网 时间:2024/05/18 09:13
  1. 用SHA-256算法,检验文件:
    使用 sha-256 哈希算法生成”c:\loging.log”文件的校验码。
import java.io.FileInputStream;import java.security.MessageDigest;public class SHACheckSumExample{    public static void main(String[] args)throws Exception    {        MessageDigest md = MessageDigest.getInstance("SHA-256");        FileInputStream fis = new FileInputStream("c:\\loging.log");        byte[] dataBytes = new byte[1024];        int nread = 0;        while ((nread = fis.read(dataBytes)) != -1) {          md.update(dataBytes, 0, nread);        };        byte[] mdbytes = md.digest();        //convert the byte to hex format method 1        StringBuffer sb = new StringBuffer();        for (int i = 0; i < mdbytes.length; i++) {          sb.append(Integer.toString((mdbytes[i] & 0xff) + 0x100, 16).substring(1));        }        System.out.println("Hex format : " + sb.toString());       //convert the byte to hex format method 2        StringBuffer hexString = new StringBuffer();        for (int i=0;i<mdbytes.length;i++) {          hexString.append(Integer.toHexString(0xFF & mdbytes[i]));        }        System.out.println("Hex format : " + hexString.toString());    }}

Output:

Hex format : 21a57f2fe765e1ae4a8bf15d73fc1bf2a533f547f2343d12a499d9c0592044d4Hex format : 21a57f2fe765e1ae4a8bf15d73fc1bf2a533f547f2343d12a499d9c0592044d4

2.用SHA-256算法对字符串加密:
使用哈希算法对字符串”123456”加密

import java.security.MessageDigest;public class SHAHashingExample{    public static void main(String[] args)throws Exception    {        String password = "123456";        MessageDigest md = MessageDigest.getInstance("SHA-256");        md.update(password.getBytes());        byte byteData[] = md.digest();        //convert the byte to hex format method 1        StringBuffer sb = new StringBuffer();        for (int i = 0; i < byteData.length; i++) {         sb.append(Integer.toString((byteData[i] & 0xff) + 0x100, 16).substring(1));        }        System.out.println("Hex format : " + sb.toString());        //convert the byte to hex format method 2        StringBuffer hexString = new StringBuffer();        for (int i=0;i<byteData.length;i++) {            String hex=Integer.toHexString(0xff & byteData[i]);            if(hex.length()==1) hexString.append('0');            hexString.append(hex);        }        System.out.println("Hex format : " + hexString.toString());    }}

Output:

Hex format : 8d969eef6ecad3c29a3a629280e686cf0c3f5d5a86aff3ca12020c923adc6c92Hex format : 8d969eef6ecad3c29a3a629280e686cf0c3f5d5a86aff3ca12020c923adc6c92

参考url

0 0
原创粉丝点击