?? mydigest.java
字號:
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 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) //二行制轉(zhuǎn)字符串
{
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();
}
}
/*info的長度變化,但是消息摘要的2進制位數(shù)還是20位? 消息摘要是由什么生成的?
alga和algb在同一個方法體中,是不是不同的2臺電腦都存在?你的信息(myinfo)和摘要(digesta)是怎么傳給對方的?*/
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -