📄 java上加密算法的实现用例.mht
字号:
<BR><BR><BR>=CC=ED=BC=D3=D2=AA=BD=F8=D0=D0=BC=C6=CB=E3=D5=AA=D2=AA=B5=C4=D0=
=C5=CF=A2 <BR><BR><BR>byte[]=20
digest()=20
=
<BR><BR><BR>=CD=EA=B3=C9=BC=C6=CB=E3,=B7=B5=BB=D8=BC=C6=CB=E3=B5=C3=B5=BD=
=B5=C4=D5=AA=D2=AA(=B6=D4=D3=DAMD5=CA=C716=CE=BB,SHA=CA=C720=CE=BB)=20
<BR><BR><BR>void reset() =
<BR><BR><BR>=B8=B4=CE=BB=20
<BR><BR><BR>static boolean isEqual(byte[] =
digesta,=20
byte[] digestb) =
<BR><BR><BR>=B1=C8=D0=A7=C1=BD=B8=F6=D5=AA=D2=AA=CA=C7=B7=F1=CF=E0=CD=AC =
<BR><BR><BR>=B4=FA=C2=EB=A3=BA =
<BR><BR>import java.security.*;=20
<BR><BR>public class myDigest { =
<BR><BR>public=20
static void main(String[] args) {=20
<BR><BR><BR>myDigest my=3Dnew myDigest();=20
<BR><BR>my.testDigest(); <BR><BR><BR>}=20
<BR><BR>public void testDigest() <BR><BR>{ =
<BR><BR>try { <BR><BR>String =
myinfo=3D"=CE=D2=B5=C4=B2=E2=CA=D4=D0=C5=CF=A2";=20
<BR><BR><BR>//java.security.MessageDigest=20
=
alg=3Djava.security.MessageDigest.getInstance("MD5");=20
<BR><BR>java.security.MessageDigest=20
=
alga=3Djava.security.MessageDigest.getInstance("SHA-1");=20
<BR><BR>alga.update(myinfo.getBytes());=20
<BR><BR>byte[] digesta=3Dalga.digest();=20
=
<BR><BR>System.out.println("=B1=BE=D0=C5=CF=A2=D5=AA=D2=AA=CA=C7:"+byte2h=
ex(digesta));=20
=
<BR><BR>//=CD=A8=B9=FD=C4=B3=D6=D0=B7=BD=CA=BD=B4=AB=B8=F8=C6=E4=CB=FB=C8=
=CB=C4=E3=B5=C4=D0=C5=CF=A2(myinfo)=BA=CD=D5=AA=D2=AA(digesta)=20
=
=B6=D4=B7=BD=BF=C9=D2=D4=C5=D0=B6=CF=CA=C7=B7=F1=B8=FC=B8=C4=BB=F2=B4=AB=CA=
=E4=D5=FD=B3=A3=20
<BR><BR>java.security.MessageDigest=20
=
algb=3Djava.security.MessageDigest.getInstance("SHA-1");=20
<BR><BR>algb.update(myinfo.getBytes()); =
<BR><BR>if=20
(algb.isEqual(digesta,algb.digest())) {=20
=
<BR><BR>System.out.println("=D0=C5=CF=A2=BC=EC=B2=E9=D5=FD=B3=A3"); =
<BR><BR>}=20
<BR><BR>else <BR><BR>{=20
=
<BR><BR>System.out.println("=D5=AA=D2=AA=B2=BB=CF=E0=CD=AC"); <BR><BR>}=20
<BR><BR><BR>} <BR><BR>catch=20
(java.security.NoSuchAlgorithmException =
ex) {=20
=
<BR><BR>System.out.println("=B7=C7=B7=A8=D5=AA=D2=AA=CB=E3=B7=A8"); =
<BR><BR>}=20
<BR><BR><BR>} <BR><BR>public String=20
byte2hex(byte[] b) =
//=B6=FE=D0=D0=D6=C6=D7=AA=D7=D6=B7=FB=B4=AE <BR><BR>{=20
<BR><BR>String hs=3D""; <BR><BR>String =
stmp=3D"";=20
<BR><BR>for (int n=3D0;n {=20
=
<BR><BR>stmp=3D(java.lang.Integer.toHexString(b[n]=20
& 0XFF)); <BR><BR>if =
(stmp.length()=3D=3D1)=20
hs=3Dhs+"0"+stmp; <BR><BR>else =
hs=3Dhs+stmp;=20
<BR><BR>if (n } <BR><BR>return =
hs.toUpperCase();=20
<BR><BR>} <BR><BR><BR>} =
<BR><BR><BR><BR><BR>2.3.=20
=CA=FD=D7=D6=C7=A9=C3=FBDSA =
<BR><BR><BR>=B6=D4=D3=DA=D2=BB=B8=F6=D3=C3=BB=A7=C0=B4=BD=B2=CA=D7=CF=C8=D2=
=AA=C9=FA=B3=C9=CB=FB=B5=C4=C3=DC=D4=BF=B6=D4,=B2=A2=C7=D2=B7=D6=B1=F0=B1=
=A3=B4=E6=20
=
<BR><BR>=C9=FA=B3=C9=D2=BB=B8=F6KeyPairGenerator=CA=B5=C0=FD=20
<BR><BR>java.security.KeyPairGenerator=20
=
keygen=3Djava.security.KeyPairGenerator.getInstance("DSA");=20
=
<BR><BR>=C8=E7=B9=FB=C9=E8=B6=A8=CB=E6=BB=FA=B2=FA=C9=FA=C6=F7=BE=CD=D3=C3=
=C8=E7=CF=E0=B4=FA=C2=EB=B3=F5=CA=BC=BB=AF <BR><BR>SecureRandom=20
secrand=3Dnew SecureRandom();=20
=
<BR><BR>secrand.setSeed("tttt".getBytes());=20
=
//=B3=F5=CA=BC=BB=AF=CB=E6=BB=FA=B2=FA=C9=FA=C6=F7 =
<BR><BR>keygen.initialize(512,secrand);=20
=
//=B3=F5=CA=BC=BB=AF=C3=DC=D4=BF=C9=FA=B3=C9=C6=F7 <BR><BR>=B7=F1=D4=F2=20
<BR><BR>keygen.initialize(512);=20
=
<BR><BR>=C9=FA=B3=C9=C3=DC=D4=BF=B9=AB=D4=BFpubkey=BA=CD=CB=BD=D4=BFprike=
y <BR><BR>KeyPair=20
keys=3Dkeygen.generateKeyPair(); =
//=C9=FA=B3=C9=C3=DC=D4=BF=D7=E9=20
<BR><BR>PublicKey =
pubkey=3Dkeys.getPublic();=20
<BR><BR>PrivateKey =
prikey=3Dkeys.getPrivate();=20
=
<BR><BR>=B7=D6=B1=F0=B1=A3=B4=E6=D4=DAmyprikey.dat=BA=CDmypubkey.dat=D6=D0=
,=D2=D4=B1=E3=CF=C2=B4=CE=B2=BB=D4=DA=C9=FA=B3=C9=20
=
<BR><BR>(=C9=FA=B3=C9=C3=DC=D4=BF=B6=D4=B5=C4=CA=B1=BC=E4=B1=C8=BD=CF=B3=A4=
=20
<BR><BR>java.io.ObjectOutputStream =
out=3Dnew=20
java.io.ObjectOutputStream(new=20
java.io.FileOutputStream("myprikey.dat")); =
<BR><BR>out.writeObject(prikey);=20
<BR><BR>out.close(); <BR><BR>out=3Dnew=20
java.io.ObjectOutputStream(new=20
java.io.FileOutputStream("mypubkey.dat")); =
<BR><BR>out.writeObject(pubkey);=20
<BR><BR>out.close();=20
=
<BR><BR><BR><BR><BR><BR>=D3=C3=CB=FB=CB=BD=C8=CB=C3=DC=D4=BF(prikey)=B6=D4=
=CB=FB=CB=F9=C8=B7=C8=CF=B5=C4=D0=C5=CF=A2(info)=BD=F8=D0=D0=CA=FD=D7=D6=C7=
=A9=C3=FB=B2=FA=C9=FA=D2=BB=B8=F6=C7=A9=C3=FB=CA=FD=D7=E9=20
=
<BR><BR>=B4=D3=CE=C4=BC=FE=D6=D0=B6=C1=C8=EB=CB=BD=C8=CB=C3=DC=D4=BF(prik=
ey)=20
<BR><BR>java.io.ObjectInputStream in=3Dnew =
java.io.ObjectInputStream(new=20
java.io.FileInputStream("myprikey.dat"));=20
<BR><BR>PrivateKey=20
myprikey=3D(PrivateKey)in.readObject();=20
<BR><BR>in.close();=20
=
<BR><BR>=B3=F5=CA=BC=D2=BB=B8=F6Signature=B6=D4=CF=F3,=B2=A2=D3=C3=CB=BD=D4=
=BF=B6=D4=D0=C5=CF=A2=C7=A9=C3=FB=20
<BR><BR>java.security.Signature=20
=
signet=3Djava.security.Signature.getInstance("DSA");=20
<BR><BR>signet.initSign(myprikey);=20
<BR><BR>signet.update(myinfo.getBytes());=20
<BR><BR>byte[] signed=3Dsignet.sign();=20
=
<BR><BR>=B0=D1=D0=C5=CF=A2=BA=CD=C7=A9=C3=FB=B1=A3=B4=E6=D4=DA=D2=BB=B8=F6=
=CE=C4=BC=FE=D6=D0(myinfo.dat)=20
<BR><BR>java.io.ObjectOutputStream =
out=3Dnew=20
java.io.ObjectOutputStream(new=20
java.io.FileOutputStream("myinfo.dat"));=20
<BR><BR>out.writeObject(myinfo);=20
<BR><BR>out.writeObject(signed);=20
<BR><BR>out.close(); =
<BR><BR>=B0=D1=CB=FB=B5=C4=B9=AB=D4=BF=B5=C4=D0=C5=CF=A2=BC=B0=C7=A9=C3=FB=
=B7=A2=B8=F8=C6=E4=CB=FC=D3=C3=BB=A7=20
=
<BR><BR><BR><BR><BR><BR>=C6=E4=CB=FB=D3=C3=BB=A7=D3=C3=CB=FB=B5=C4=B9=AB=B9=
=B2=C3=DC=D4=BF(pubkey)=BA=CD=C7=A9=C3=FB(signed)=BA=CD=D0=C5=CF=A2(info)=
=BD=F8=D0=D0=D1=E9=D6=A4=CA=C7=B7=F1=D3=C9=CB=FB=C7=A9=C3=FB=B5=C4=D0=C5=CF=
=A2=20
<BR><BR>=B6=C1=C8=EB=B9=AB=D4=BF =
<BR><BR>java.io.ObjectInputStream=20
in=3Dnew java.io.ObjectInputStream(new=20
java.io.FileInputStream("mypubkey.dat"));=20
<BR><BR>PublicKey=20
pubkey=3D(PublicKey)in.readObject();=20
<BR><BR>in.close(); =
<BR><BR><BR>=B6=C1=C8=EB=C7=A9=C3=FB=BA=CD=D0=C5=CF=A2=20
<BR><BR>in=3Dnew =
java.io.ObjectInputStream(new=20
java.io.FileInputStream("myinfo.dat"));=20
<BR><BR>String =
info=3D(String)in.readObject();=20
<BR><BR>byte[] =
signed=3D(byte[])in.readObject();=20
<BR><BR>in.close();=20
=
<BR><BR><BR>=B3=F5=CA=BC=D2=BB=B8=F6Signature=B6=D4=CF=F3,=B2=A2=D3=C3=B9=
=AB=D4=BF=BA=CD=C7=A9=C3=FB=BD=F8=D0=D0=D1=E9=D6=A4=20
<BR><BR>java.security.Signature=20
=
signetcheck=3Djava.security.Signature.getInstance("DSA");=20
<BR><BR>signetcheck.initVerify(pubkey);=20
=
<BR><BR>signetcheck.update(info.getBytes());=20
<BR><BR><BR>if =
(signetcheck.verify(signed)) {=20
=
System.out.println("=C7=A9=C3=FB=D5=FD=B3=A3");}=20
=
<BR><BR><BR>=B6=D4=D3=DA=C3=DC=D4=BF=B5=C4=B1=A3=B4=E6=B1=BE=CE=C4=CA=C7=D3=
=C3=B6=D4=CF=F3=C1=F7=B5=C4=B7=BD=CA=BD=B1=A3=B4=E6=BA=CD=B4=AB=CB=CD=B5=C4=
,=D2=B2=BF=C9=BF=C9=D2=D4=D3=C3=B1=E0=C2=EB=B5=C4=B7=BD=CA=BD=B1=A3=B4=E6=
.=D7=A2=D2=E2=D2=AA=20
<BR><BR>import java.security.spec.* =
<BR><BR>import=20
java.security.* =
<BR><BR><BR>=BE=DF=D0=DD=CB=B5=C3=F7=C8=E7=CF=C2=20
<BR><BR><BR>public =
key=CA=C7=D3=C3X.509=B1=E0=C2=EB=B5=C4,=C0=FD=C2=EB=C8=E7=CF=C2:=20
<BR><BR>byte[]=20
bobEncodedPubKey=3Dmypublic.getEncoded(); =
//=C9=FA=B3=C9=B1=E0=C2=EB=20
=
<BR><BR>//=B4=AB=CB=CD=B6=FE=BD=F8=D6=C6=B1=E0=C2=EB =
<BR><BR>//=D2=D4=CF=C2=B4=FA=C2=EB=D7=AA=BB=BB=B1=E0=C2=EB=CE=AA=CF=E0=D3=
=A6key=B6=D4=CF=F3=20
<BR><BR>X509EncodedKeySpec bobPubKeySpec =
=3D new=20
X509EncodedKeySpec(bobEncodedPubKey);=20
<BR><BR>KeyFactory keyFactory =3D=20
KeyFactory.getInstance("DSA"); =
<BR><BR>PublicKey=20
bobPubKey =3D=20
keyFactory.generatePublic(bobPubKeySpec);=20
<BR><BR><BR><BR><BR>=B6=D4=D3=DAPrivate =
key=CA=C7=D3=C3PKCS#8=B1=E0=C2=EB,=C0=FD=C2=EB=C8=E7=CF=C2:=20
<BR><BR>byte[] =
bPKCS=3Dmyprikey.getEncoded();=20
=
<BR><BR>//=B4=AB=CB=CD=B6=FE=BD=F8=D6=C6=B1=E0=C2=EB =
<BR><BR>//=D2=D4=CF=C2=B4=FA=C2=EB=D7=AA=BB=BB=B1=E0=C2=EB=CE=AA=CF=E0=D3=
=A6key=B6=D4=CF=F3=20
<BR><BR>PKCS8EncodedKeySpec priPKCS8=3Dnew =
PKCS8EncodedKeySpec(bPKCS); =
<BR><BR>KeyFactory=20
keyf=3DKeyFactory.getInstance("DSA");=20
<BR><BR>PrivateKey=20
=
otherprikey=3Dkeyf.generatePrivate(priPKCS8);=20
<BR><BR><BR><BR><BR><BR>=B3=A3=D3=C3API=20
<BR><BR>java.security.KeyPairGenerator =
=C3=DC=D4=BF=C9=FA=B3=C9=C6=F7=C0=E0=20
<BR><BR>public static KeyPairGenerator=20
getInstance(String algorithm) throws=20
NoSuchAlgorithmException=20
=
<BR><BR>=D2=D4=D6=B8=B6=A8=B5=C4=CB=E3=B7=A8=B7=B5=BB=D8=D2=BB=B8=F6KeyPa=
irGenerator =B6=D4=CF=F3 <BR><BR>=B2=CE=CA=FD:=20
algorithm =
=CB=E3=B7=A8=C3=FB.=C8=E7:"DSA","RSA" <BR><BR><BR>public=20
void initialize(int keysize)=20
=
<BR><BR><BR><BR>=D2=D4=D6=B8=B6=A8=B5=C4=B3=A4=B6=C8=B3=F5=CA=BC=BB=AFKey=
PairGenerator=B6=D4=CF=F3,=C8=E7=B9=FB=C3=BB=D3=D0=B3=F5=CA=BC=BB=AF=CF=B5=
=CD=B3=D2=D41024=B3=A4=B6=C8=C4=AC=C8=CF=C9=E8=D6=C3=20
<BR><BR><BR><BR>=B2=CE=CA=FD:keysize =
=CB=E3=B7=A8=CE=BB=B3=A4.=C6=E4=B7=B6=CE=A7=B1=D8=D0=EB=D4=DA 512 =B5=BD =
1024=20
=D6=AE=BC=E4=A3=AC=C7=D2=B1=D8=D0=EB=CE=AA =
64 =B5=C4=B1=B6=CA=FD <BR><BR><BR>public void=20
initialize(int keysize, SecureRandom =
random)=20
=
<BR><BR>=D2=D4=D6=B8=B6=A8=B5=C4=B3=A4=B6=C8=B3=F5=CA=BC=BB=AF=BA=CD=CB=E6=
=BB=FA=B7=A2=C9=FA=C6=F7=B3=F5=CA=BC=BB=AFKeyPairGenerator=B6=D4=CF=F3=20
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -