Diffle-Human密钥交换(信息安全)--java版本

发布时间:2019-11-21 发布网站:脚本宝典
脚本宝典收集整理的这篇文章主要介绍了Diffle-Human密钥交换(信息安全)--java版本脚本宝典觉得挺不错的,现在分享给大家,也给大家做个参考。

package hao.ning;

import java.io.FileinputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.math.BigInteger;
import java.securITy.InvalidAlgorithmParameterException;
import java.security.KeyPair;
import java.security.KeyPairGenerator;
import java.security.NoSuchAlgorithmException;
import java.security.PRivateKey;
import java.security.PublicKey;

import javax.crypto.KeyAgreement;
import javax.crypto.sPEc.DHParameterSpec;
import javax.crypto.spec.SecretKeySpec;

public @L_512_12@ Key_DH {

  private final static byte skip1024Modulusbytes[]={           (byte)0xF4, (byte)0x88, (byte)0xFD, (byte)0x58,             (byte)0x4E, (byte)0x49, (byte)0xDB, (byte)0xCD,             (byte)0x20, (byte)0xB4, (byte)0x9D, (byte)0xE4,             (byte)0x91, (byte)0x07, (byte)0x36, (byte)0x6B,             (byte)0x33, (byte)0x6C, (byte)0x38, (byte)0x0D,             (byte)0x45, (byte)0x1D, (byte)0x0F, (byte)0x7C,             (byte)0x88, (byte)0xB3, (byte)0x1C, (byte)0x7C,             (byte)0x5B, (byte)0x2D, (byte)0x8E, (byte)0xF6,             (byte)0xF3, (byte)0xC9, (byte)0x23, (byte)0xC0,             (byte)0x43, (byte)0xF0, (byte)0xA5, (byte)0x5B,             (byte)0x18, (byte)0x8D, (byte)0x8E, (byte)0xBB,             (byte)0x55, (byte)0x8C, (byte)0xB8, (byte)0x5D,             (byte)0x38, (byte)0xD3, (byte)0x34, (byte)0xFD,             (byte)0x7C, (byte)0x17, (byte)0x57, (byte)0x43,             (byte)0xA3, (byte)0x1D, (byte)0x18, (byte)0x6C,             (byte)0xDE, (byte)0x33, (byte)0x21, (byte)0x2C,             (byte)0xB5, (byte)0x2A, (byte)0xFF, (byte)0x3C,             (byte)0xE1, (byte)0xB1, (byte)0x29, (byte)0x40,             (byte)0x18, (byte)0x11, (byte)0x8D, (byte)0x7C,             (byte)0x84, (byte)0xA7, (byte)0x0A, (byte)0x72,             (byte)0xD6, (byte)0x86, (byte)0xC4, (byte)0x03,             (byte)0x19, (byte)0xC8, (byte)0x07, (byte)0x29,             (byte)0x7A, (byte)0xCA, (byte)0x95, (byte)0x0C,             (byte)0xD9, (byte)0x96, (byte)0x9F, (byte)0xAB,             (byte)0xD0, (byte)0x0A, (byte)0x50, (byte)0x9B,             (byte)0x02, (byte)0x46, (byte)0xD3, (byte)0x08,             (byte)0x3D, (byte)0x66, (byte)0xA4, (byte)0x5D,             (byte)0x41, (byte)0x9F, (byte)0x9C, (byte)0x7C,             (byte)0xBD, (byte)0x89, (byte)0x4B, (byte)0x22,             (byte)0x19, (byte)0x26, (byte)0xBA, (byte)0xAB,             (byte)0xA2, (byte)0x5E, (byte)0xC3, (byte)0x55,             (byte)0xE9, (byte)0x2F, (byte)0x78, (byte)0xC7    };   

// The skip 1024 bit modulus

   /*转载请注明:www.panmum.com*/   private static final BigInteger skip1024Modulus=new BigInteger(1,skip1024ModulusBytes);   private static final BigInteger skip1024Base=BigInteger.valueOf(2);      DHParameterSpec DHP=new DHParameterSpec(skip1024Modulus,skip1024Base);   byte []sb;      public void makeKey(){     KeyPairGenerator kpg = null;     try {         kpg = KeyPairGenerator.getInstance("DH");     }      catch (NoSuchAlgorithmException e1) {                  e1.printStackTrace();     }       try {         kpg.initialize(DHP);//初始化"DH",为其指定参数     }      catch (InvalidAlgorithmParameterException e) {                  e.printStackTrace();     }      KeyPair kp=kpg.generateKeyPair();      PublicKey pbk=kp.getPublic();      PrivateKey prk=kp.getPrivate();           try {         FileOutputStream f1 = new FileOutputStream("pbk.dat");         ObjectOutputStream out1 = null;                  try {             out1 = new ObjectOutputStream(f1);         }          catch (IOException e) {             e.printStackTrace();         }         try {             out1.writeObject(pbk);         }          catch (IOException e) {             e.printStackTrace();         }     }      /*转载请注明:www.tengxunyun.me*/     catch (FileNotFoundException e) {         e.printStackTrace();     }          try {         FileOutputStream f2= new FileOutputStream("prk.dat");         ObjectOutputStream out2 = null;                  try {             out2 = new ObjectOutputStream(f2);         }          catch (IOException e) {             e.printStackTrace();         }         try {             out2.writeObject(prk);         }          catch (IOException e) {             e.printStackTrace();         }     }           catch (FileNotFoundException e) {         e.printStackTrace();     } }    public void shareKey(){     PublicKey pbk=null;     PrivateKey prk = null;     try {         FileInputStream f1= new FileInputStream("pbk.dat");         ObjectInputStream in1 = null;                  try {             in1 = new ObjectInputStream(f1);         }          catch (IOException e) {             e.printStackTrace();         }         /*转载请注明:www.quzhuanpan.com*/         try {             try {                 pbk=(PublicKey)in1.readObject();             }             catch (ClassNotFoundException e) {                                  e.printStackTrace();             }         }          catch (IOException e) {             e.printStackTrace();         }     }      catch (FileNotFoundException e) {         e.printStackTrace();     }          try {         FileInputStream f2= new FileInputStream("prk.dat");         ObjectInputStream in2 = null;                  try {             in2 = new ObjectInputStream(f2);         }          catch (IOException e) {             e.printStackTrace();         }         try {             try {                 prk=(PrivateKey)in2.readObject();             }             catch (ClassNotFoundException e) {                                  e.printStackTrace();             }         }          catch (IOException e) {             e.printStackTrace();         }     }      catch (FileNotFoundException e) {         e.printStackTrace();     }          try {         KeyAgreement ka=KeyAgreement.getInstance("DH");         ka.init(prk);//用自己的私钥初始化秘药协定对象         ka.doPhase(pbk, true);         sb=ka.generateSecret();         SecretKeySpec k=new SecretKeySpec(sb,"DESede");     }      catch (Exception e) {                  e.printStackTrace();     } }  public void printShareInformation(){     System.out.println("Share Information:");     for(int i=0;i<sb.length;i++){         System.out.print(sb[i]+",");     } }     

}

package hao.ning;

public class Main {

public static @H_638_@R_406_2568@@void main(String args[]){     Key_DH k_dh=new Key_DH();     k_dh.makeKey();     k_dh.shareKey();     k_dh.printShareInformation(); } 

}

脚本宝典总结

以上是脚本宝典为你收集整理的Diffle-Human密钥交换(信息安全)--java版本全部内容,希望文章能够帮你解决Diffle-Human密钥交换(信息安全)--java版本所遇到的问题。

如果觉得脚本宝典网站内容还不错,欢迎将脚本宝典推荐好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。