📄 java上加密算法的实现用例.mht
字号:
<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 =D6=AE=BC=E4=A3=AC=C7=D2=B1=D8=D0=EB=CE=AA=20
64 =B5=C4=B1=B6=CA=FD <BR><BR>random =
=D2=BB=B8=F6=CB=E6=BB=FA=CE=BB=B5=C4=C0=B4=D4=B4(=B6=D4=D3=DAinitialize(i=
nt=20
=
keysize)=CA=B9=D3=C3=C1=CB=C4=AC=C8=CF=CB=E6=BB=FA=C6=F7 =
<BR><BR><BR>public abstract=20
KeyPair generateKeyPair() =
<BR><BR>=B2=FA=C9=FA=D0=C2=C3=DC=D4=BF=B6=D4=20
<BR><BR><BR>java.security.KeyPair =
=C3=DC=D4=BF=B6=D4=C0=E0=20
<BR><BR>public PrivateKey getPrivate()=20
<BR><BR>=B7=B5=BB=D8=CB=BD=D4=BF =
<BR><BR><BR>public PublicKey=20
getPublic() =
<BR><BR>=B7=B5=BB=D8=B9=AB=D4=BF=20
<BR><BR><BR>java.security.Signature =
=C7=A9=C3=FB=C0=E0=20
<BR><BR>public static Signature =
getInstance(String=20
algorithm) throws NoSuchAlgorithmException =
=
<BR><BR>=B7=B5=BB=D8=D2=BB=B8=F6=D6=B8=B6=A8=CB=E3=B7=A8=B5=C4Signature=B6=
=D4=CF=F3 <BR><BR>=B2=CE=CA=FD algorithm=20
=C8=E7:"DSA" <BR><BR><BR>public final void =
initSign(PrivateKey privateKey) =
<BR><BR>throws=20
InvalidKeyException =
<BR><BR>=D3=C3=D6=B8=B6=A8=B5=C4=CB=BD=D4=BF=B3=F5=CA=BC=BB=AF=20
<BR><BR>=B2=CE=CA=FD:privateKey =
=CB=F9=BD=F8=D0=D0=C7=A9=C3=FB=CA=B1=D3=C3=B5=C4=CB=BD=D4=BF=20
<BR><BR><BR>public final void update(byte =
data)=20
<BR><BR>throws SignatureException =
<BR><BR>public=20
final void update(byte[] data) =
<BR><BR>throws=20
SignatureException <BR><BR>public final =
void=20
update(byte[] data, int off, int len)=20
<BR><BR>throws SignatureException =
<BR><BR>=CC=ED=BC=D3=D2=AA=C7=A9=C3=FB=B5=C4=D0=C5=CF=A2=20
<BR><BR><BR>public final byte[] sign()=20
<BR><BR>throws SignatureException=20
=
<BR><BR>=B7=B5=BB=D8=C7=A9=C3=FB=B5=C4=CA=FD=D7=E9,=C7=B0=CC=E1=CA=C7init=
Sign=BA=CDupdate=20
<BR><BR><BR>public final void =
initVerify(PublicKey=20
publicKey) <BR><BR>throws =
InvalidKeyException=20
=
<BR><BR>=D3=C3=D6=B8=B6=A8=B5=C4=B9=AB=D4=BF=B3=F5=CA=BC=BB=AF =
<BR><BR>=B2=CE=CA=FD:publicKey =
=D1=E9=D6=A4=CA=B1=D3=C3=B5=C4=B9=AB=D4=BF=20
<BR><BR><BR>public final boolean =
verify(byte[]=20
signature) <BR><BR>throws =
SignatureException=20
=
<BR><BR>=D1=E9=D6=A4=C7=A9=C3=FB=CA=C7=B7=F1=D3=D0=D0=A7,=C7=B0=CC=E1=CA=C7=
=D2=D1=BE=ADinitVerify=B3=F5=CA=BC=BB=AF <BR><BR>=B2=CE=CA=FD:=20
signature =C7=A9=C3=FB=CA=FD=D7=E9 =
<BR><BR>*/ <BR><BR>import=20
java.security.*; <BR><BR>import=20
java.security.spec.*; <BR><BR>public class =
testdsa=20
{ <BR><BR>public static void main(String[] =
args)=20
throws=20
=
java.security.NoSuchAlgorithmException,java.lang.Exception=20
{ <BR><BR>testdsa my=3Dnew testdsa();=20
<BR><BR>my.run(); <BR><BR>} <BR><BR>public =
void=20
run() <BR><BR>{ =
<BR><BR><BR>//=CA=FD=D7=D6=C7=A9=C3=FB=C9=FA=B3=C9=C3=DC=D4=BF=20
=
<BR><BR>//=B5=DA=D2=BB=B2=BD=C9=FA=B3=C9=C3=DC=D4=BF=B6=D4,=C8=E7=B9=FB=D2=
=D1=BE=AD=C9=FA=B3=C9=B9=FD,=B1=BE=B9=FD=B3=CC=BE=CD=BF=C9=D2=D4=CC=F8=B9=
=FD,=B6=D4=D3=C3=BB=A7=C0=B4=BD=B2myprikey.dat=D2=AA=B1=A3=B4=E6=D4=DA=B1=
=BE=B5=D8=20
=
<BR><BR>//=B6=F8mypubkey.dat=B8=F8=B7=A2=B2=BC=B8=F8=C6=E4=CB=FC=D3=C3=BB=
=A7 <BR><BR>if ((new=20
=
java.io.File("myprikey.dat")).exists()=3D=3Dfalse) {=20
<BR><BR>if (generatekey()=3D=3Dfalse) {=20
=
<BR><BR>System.out.println("=C9=FA=B3=C9=C3=DC=D4=BF=B6=D4=B0=DC");=20
<BR><BR>return; <BR><BR>}; <BR><BR>}=20
=
<BR><BR>//=B5=DA=B6=FE=B2=BD,=B4=CB=D3=C3=BB=A7=20
=
<BR><BR>//=B4=D3=CE=C4=BC=FE=D6=D0=B6=C1=C8=EB=CB=BD=D4=BF,=B6=D4=D2=BB=B8=
=F6=D7=D6=B7=FB=B4=AE=BD=F8=D0=D0=C7=A9=C3=FB=BA=F3=B1=A3=B4=E6=D4=DA=D2=BB=
=B8=F6=CE=C4=BC=FE(myinfo.dat)=D6=D0=20
=
<BR><BR>//=B2=A2=C7=D2=D4=D9=B0=D1myinfo.dat=B7=A2=CB=CD=B3=F6=C8=A5=20
=
<BR><BR>//=CE=AA=C1=CB=B7=BD=B1=E3=CA=FD=D7=D6=C7=A9=C3=FB=D2=B2=B7=C5=BD=
=F8=C1=CBmyifno.dat=CE=C4=BC=FE=D6=D0,=B5=B1=C8=BB=D2=B2=BF=C9=B7=D6=B1=F0=
=B7=A2=CB=CD=20
<BR><BR><BR>try {=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(); <BR><BR><BR>//=20
java.security.spec.X509EncodedKeySpec =
pubX509=3Dnew=20
=
java.security.spec.X509EncodedKeySpec(bX509);=20
=
<BR><BR><BR>//java.security.spec.X509EncodedKeySpec=20
=
pubkeyEncode=3Djava.security.spec.X509EncodedKeySpec=20
<BR><BR>String =
myinfo=3D"=D5=E2=CA=C7=CE=D2=B5=C4=D0=C5=CF=A2"; =
//=D2=AA=C7=A9=C3=FB=B5=C4=D0=C5=CF=A2=20
=
<BR><BR>//=D3=C3=CB=BD=D4=BF=B6=D4=D0=C5=CF=A2=C9=FA=B3=C9=CA=FD=D7=D6=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(); =
//=B6=D4=D0=C5=CF=A2=B5=C4=CA=FD=D7=D6=C7=A9=C3=FB=20
=
<BR><BR>System.out.println("signed(=C7=A9=C3=FB=C4=DA=C8=DD)=3D"+byte2hex=
(signed));=20
=
<BR><BR>//=B0=D1=D0=C5=CF=A2=BA=CD=CA=FD=D7=D6=C7=A9=C3=FB=B1=A3=B4=E6=D4=
=DA=D2=BB=B8=F6=CE=C4=BC=FE=D6=D0=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();=20
=
<BR><BR>System.out.println("=C7=A9=C3=FB=B2=A2=C9=FA=B3=C9=CE=C4=BC=FE=B3=
=C9=B9=A6"); <BR><BR>}=20
<BR><BR>catch (java.lang.Exception e) {=20
<BR><BR>e.printStackTrace();=20
=
<BR><BR>System.out.println("=C7=A9=C3=FB=B2=A2=C9=FA=B3=C9=CE=C4=BC=FE=CA=
=A7=B0=DC");=20
<BR><BR>}; =
<BR><BR><BR>//=B5=DA=C8=FD=B2=BD=20
=
<BR><BR>//=C6=E4=CB=FB=C8=CB=CD=A8=B9=FD=B9=AB=B9=B2=B7=BD=CA=BD=B5=C3=B5=
=BD=B4=CB=BB=A7=B5=C4=B9=AB=D4=BF=BA=CD=CE=C4=BC=FE=20
=
<BR><BR>//=C6=E4=CB=FB=C8=CB=D3=C3=B4=CB=BB=A7=B5=C4=B9=AB=D4=BF,=B6=D4=CE=
=C4=BC=FE=BD=F8=D0=D0=BC=EC=B2=E9,=C8=E7=B9=FB=B3=C9=B9=A6=CB=B5=C3=F7=CA=
=C7=B4=CB=D3=C3=BB=A7=B7=A2=B2=BC=B5=C4=D0=C5=CF=A2.=20
<BR><BR>// <BR><BR>try {=20
<BR><BR><BR>java.io.ObjectInputStream =
in=3Dnew=20
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();=20
=
<BR><BR>System.out.println(pubkey.getFORMat());=20
<BR><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>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>if (signetcheck.verify(signed)) {=20
=
<BR><BR>System.out.println("info=3D"+info);=20
=
<BR><BR>System.out.println("=C7=A9=C3=FB=D5=FD=B3=A3"); <BR><BR>}=20
<BR><BR>else =
System.out.println("=B7=C7=C7=A9=C3=FB=D5=FD=B3=A3");=20
<BR><BR>} <BR><BR>catch =
(java.lang.Exception e)=20
{e.printStackTrace();}; <BR><BR><BR><BR>}=20
=
<BR><BR><BR>//=C9=FA=B3=C9=D2=BB=B6=D4=CE=C4=BC=FEmyprikey.dat=BA=CDmypub=
key.dat---=CB=BD=D4=BF=BA=CD=B9=AB=D4=BF,=20
=
<BR><BR>//=B9=AB=D4=BF=D2=AA=D3=C3=BB=A7=B7=A2=CB=CD(=CE=C4=BC=FE,=CD=F8=C2=
=E7=B5=C8=B7=BD=B7=A8)=B8=F8=C6=E4=CB=FC=D3=C3=BB=A7,=CB=BD=D4=BF=B1=A3=B4=
=E6=D4=DA=B1=BE=B5=D8=20
<BR><BR>public boolean generatekey() =
<BR><BR>{=20
<BR><BR>try {=20
<BR><BR>java.security.KeyPairGenerator=20
=
keygen=3Djava.security.KeyPairGenerator.getInstance("DSA");=20
<BR><BR>// SecureRandom secrand=3Dnew=20
SecureRandom(); <BR><BR>//=20
secrand.setSeed("tttt".getBytes()); =
//=B3=F5=CA=BC=BB=AF=CB=E6=BB=FA=B2=FA=C9=FA=C6=F7=20
<BR><BR>// keygen.initialize(576,secrand); =
=
//=B3=F5=CA=BC=BB=AF=C3=DC=D4=BF=C9=FA=B3=C9=C6=F7 =
<BR><BR>keygen.initialize(512);=20
<BR><BR>KeyPair =
keys=3Dkeygen.genKeyPair();=20
<BR><BR>// KeyPair =
keys=3Dkeygen.generateKeyPair();=20
//=C9=FA=B3=C9=C3=DC=D4=BF=D7=E9 =
<BR><BR>PublicKey pubkey=3Dkeys.getPublic();=20
<BR><BR>PrivateKey =
prikey=3Dkeys.getPrivate();=20
<BR><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();=20
=
<BR><BR>System.out.println("=D0=B4=C8=EB=B6=D4=CF=F3 prikeys ok");=20
<BR><BR>out=3Dnew =
java.io.ObjectOutputStream(new=20
java.io.FileOutputStream("mypubkey.dat")); =
<BR><BR>out.writeObject(pubkey);=20
<BR><BR>out.close();=20
=
<BR><BR>System.out.println("=D0=B4=C8=EB=B6=D4=CF=F3 pubkeys ok");=20
=
<BR><BR>System.out.println("=C9=FA=B3=C9=C3=DC=D4=BF=B6=D4=B3=C9=B9=A6");=
=20
<BR><BR>return true; <BR><BR>} =
<BR><BR>catch=20
(java.lang.Exception e) {=20
<BR><BR>e.printStackTrace();=20
=
<BR><BR>System.out.println("=C9=FA=B3=C9=C3=DC=D4=BF=B6=D4=CA=A7=B0=DC");=
=20
<BR><BR>return false; <BR><BR>}; =
<BR><BR><BR>}=20
<BR><BR><BR>public String byte2hex(byte[] =
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -