String s="abc";
java.security.MessageDigest md=java.security.MessageDigest.getInstance("MD5");
md.update(s.getBytes());
byte[] digest=md.digest();
java.security.MessageDigest md=java.security.MessageDigest.getInstance("MD5");
md.update(s.getBytes());
byte[] digest=md.digest();
import java.security.*;
public class myDigest {
public static void main(String[] args) { myDigest my=new myDigest();
my.testDigest(); }
public void testDigest()
{
try {
String myinfo="我的测试信息"; //java.security.MessageDigest alg=java.security.MessageDigest.getInstance("MD5");
java.security.MessageDigest alga=java.security.MessageDigest.getInstance("SHA-1");
alga.update(myinfo.getBytes());
byte[] digesta=alga.digest();
System.out.println("本信息摘要是:"+byte2hex(digesta));
//通过某中方式传给其他人你的信息(myinfo)和摘要(digesta) 对方可以判断是否更改或传输正常
java.security.MessageDigest algb=java.security.MessageDigest.getInstance("SHA-1");
algb.update(myinfo.getBytes());
if (algb.isEqual(digesta,algb.digest())) {
System.out.println("信息检查正常");
}
else
{
System.out.println("摘要不相同");
} }
catch (java.security.NoSuchAlgorithmException ex) {
System.out.println("非法摘要算法");
} }
public String byte2hex(byte[] b) //二行制转字符串
{
String hs="";
String stmp="";
for (int n=0;n<b.length;n++)
{
stmp=(java.lang.Integer.toHexString(b[n] & 0XFF));
if (stmp.length()==1) hs=hs+"0"+stmp;
else hs=hs+stmp;
if (n<b.length-1) hs=hs+":";
}
return hs.toUpperCase();
}}
.,,,::::t:MMMMMMMMMBVt:+..
,IVXVYIBttt+::+IVVMMMMMMRR:’
,YYVYItMYti+i++:X+Rt:tXWRMR,
.YRiIYRMViitVXRWRYMI++++itMM..
.Y+,.,X::,,,YMMMMMMMMRVItXMti
:X+:,X:,. .,iiIRMWMMMBBRMMBY.
tR+:I:i:+Y:IitYVYMMMMMMMMRi.
.+RXt:,::.::XXIBMMMMMMMMM+:
,RRXitY+,.::RWMMMMMMMMt.
VYI:::,..:tVMMMMMMBY+.
.VBBW:::::,i.MMMMMBi:.
.tWRRVi:::.X:VMMMMMMY.
,+i+:,XYtt+:,i:,MMMBR:
...VV..:..:.tt::++:+,RMYMV.
:M:::..:,.:,,,.+t+++Ytt.,+:
tRt:,.:,.:,:.:+.,:++tit,
:tXt:,:,:.:.,,+,:+YRY,
:++:::.,:.:.::+:iMi
,Ri:::,:::::::+Ii
,+:Xii:,,::I:tit,.
:BBt,:+::,::i+.
:BWXX::::::iX.
:BWVIi++t+:V+
WBXtItii+iWI.
:MWIYIti+iVRY,
RBXVYItiiIYXWI,
:MRWWVYttttIIXWt.
.XMBRRXIti++itIXW,
.BMBBRVIi+::+ttXX.
,MMBRXYti:::+tIW:
tMMRWYti+++ittXV
+MRVYti+++ittWI
.VMWVtiiiiiitIR,
.XBBWVttttttttXRv
.,WBRBXVtttttttIWt
:RWXWBXYtttttttYR:
.iRWVIiBWYIttttttYW,
.tWVYti:WRVIttittIVV .:,,
tWVIi++:XRVIIttttIXY ..:YYtYi:tittV,
tXYti+++tWRVYttittYWIiIYYVItt:iXW+....
:WIt+++iXRBBVYItitIYXXYti+iIYt++:IMRi:.
.:Xti+:+tRWt:BVYItitIYWVIIIYXXWXVXYt+i+IV:
.tYi+::IWI:::BVVItitIXBRVIt:::::::tIVXRiXt
:Viii++i:itIXBXVttitVW, tBIX
.XIiXIttIVRBRBIItttIRX :VX
.,tXXWWWVi+. RXXItiYRV ..
,BWYi+IRX
tBYiitWB,
.WVtiiIRI
VWtiiiIB,
,BIiiiiWt
.BViiiiYV
XXtii+YV
iRiii+YY
:Btii+XI
Wtii+R:
XY+t+B.
YX+tYR.
tX+iWV
iXi+RI
tYiIXX
,XtiIXRt.
:BIVYRWIV
+RYXXWiYR.
iWIVYtXMV
tBYItRtM+
XBWttX:B:
YYBXXYR:,R:
tIYYYIY: i
Thank you!
try{
MessageDigest md5 = MessageDigest.getInstance("MD5");
FileInputStream fis=new FileInputStream(filename);
byte b;
while(fis.available()!=0){
b=(byte)fis.read();
md5.update(b);
}
fis.close();
byte[] digest=md5.digest();
StringBuffer hexString = new StringBuffer();
for (int i=0;i<digest.length;i++) {
hexString.append(
Integer.toHexString(0xFF & digest[i]));
hexString.append(" ");
}
System.out.println(hexString.toString()); }
catch(NoSuchAlgorithmException ie){
ie.printStackTrace();
}
MessageDigest md5 = MessageDigest.getInstance("MD5");
FileInputStream fis=new FileInputStream(filename);
DigestInputStream in=new DigestInputStream(fis,md5); //!!!
byte[] buffer=new byte[5120];
while(in.read(buffer)!=-1); //!!!
in.close();
fis.close();
byte[] digest=md5.digest();
StringBuffer hexString = new StringBuffer();
for (int i=0;i<digest.length;i++) {
hexString.append(
Integer.toHexString(0xFF & digest[i]));
}
String result=hexString.toString();result中就是该文件的digest
for (int i=0;i<digest.length;i++) {
hexString.append(
Integer.toHexString(0xFF & digest[i]));
}
String result=hexString.toString();
===========
你好,这样输出,如果高位为0就不显示了,怎么办?