/*
* 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