Java 的SHA1算法怎么实现

Python027

Java 的SHA1算法怎么实现,第1张

import java.security.*

/*

* TestEncrypt.java

* Author: MKing

* Last Date: 2005-11-21

* Description: A test progrm to encrypt a string using MD5 or SHA-1,etc.

*/

public class TestEncrypt {

public TestEncrypt() {}

public String Encrypt(String strSrc,String encName) {

//parameter strSrc is a string will be encrypted,

//parameter encName is the algorithm name will be used.

//encName dafault to "MD5"

MessageDigest md=null

String strDes=null

byte[] bt=strSrc.getBytes()

try {

if (encName==null||encName.equals("")) {

encName="MD5"

}

md=MessageDigest.getInstance(encName)

md.update(bt)

strDes=bytes2Hex(md.digest()) //to HexString

}

catch (NoSuchAlgorithmException e) {

System.out.println("Invalid algorithm.")

return null

}

return strDes

}

public String bytes2Hex(byte[]bts) {

String des=""

String tmp=null

for (int i=0i<bts.lengthi++) {

tmp=(Integer.toHexString(bts[i] &0xFF))

if (tmp.length()==1) {

des+="0"

}

des+=tmp

}

return des

}

public static void main(String[]args) {

TestEncrypt te=new TestEncrypt()

String strSrc="可以加密汉字.Oh,and english"

System.out.println("Source String:"+strSrc)

System.out.println("Encrypted String:")

System.out.println("Use Def:"+te.Encrypt(strSrc,null))

System.out.println("Use MD5:"+te.Encrypt(strSrc,"MD5"))

System.out.println("Use SHA:"+te.Encrypt(strSrc,"SHA-1"))

System.out.println("Use SHA-256:"+te.Encrypt(strSrc,"SHA-256"))

}

}

使用下面的语句即可:

DigestUtils.shaHex(要加密的字符)

加密参数最好用字节数组,毕竟SHA1算法是使用字节为单位进行运算的,字符串转字节还与字符编码有关。

首先引用这个命名空间usingSystem.Security.Cryptography//建立SHA1对象SHA1sha=newSHA1CryptoServiceProvider()//将mystr转换成byte[]ASCIIEncodingenc=newASCIIEncoding()byte[]dataToHash=enc.GetBytes(mystr)//Hash运算byte[]dataHashed=SHA1.ComputeHash(dataToHash)//将运算结果转换成stringstringhash=BitConverter.ToString(dataHashed).Replace("-","")returnhash