⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 rmisignserver.java

📁 java EJB 编程源代码。
💻 JAVA
字号:
import java.io.*;
import java.security.*;
import java.rmi.*;
import java.rmi.server.*;

public class RMISignServer extends UnicastRemoteObject implements RMISignInterface
  {
   RMISignObject rmiso = null;  //定义RMI签名对象
   String rmiServerName = null; //定义服务器名称
   String putstr = null;

   public RMISignServer(String rmiServerName) throws RemoteException
     {
      /* RMISignServer的构造器 */

      super();
      this.rmiServerName = rmiServerName;
     }

   public RMISignServer(RMISignObject rmiso) throws RemoteException
     {
      /* RMISignServer的构造器(多态形式) */
      super();
      this.rmiso = rmiso;
     }


   public String putString(String putstr) throws RemoteException
     {
      /* 重载putString()方法(函数) */

      this.putstr = putstr;
      return putstr;
     }

   public RMISignObject getSignObj() throws RemoteException
     {
      /* 重载getSignObj()方法(函数) */

      return rmiso;     //返回一个RMI签名对象
     }

   public static void main(String[] args)
     {
      KeyPairGenerator kpg = null;      //定义生成密钥对对象
      KeyPair pk = null;                //定义密钥持有者对象
      Signature signature = null;       //定义数字签名算法对象
      PublicKey puk = null;             //定义公钥对象
      PrivateKey pik = null;            //定义私钥对象
      FileInputStream fileis = null;    //定义文件输入流
      RMISignObject rmiso = null;       //定义RMI签名的实例对象
      RMISignServer rmiss = null;       //定义RMI Server实例对象
      String RemoteSerHost = null;      
      String FilePathName = null;
      byte[] fileTxt;

      try
        {
         RemoteSerHost = "//127.0.0.1/SignServer";
         FilePathName = "e:\\writeb~1\\book\\chapter6\\RMISIG~1\\RMISignature";

         /* 初始化加密机制和密钥对,并且生成公钥/密钥 */
         System.out.print("\n服务器开始启动,并且开始生成密钥对...");
         kpg = KeyPairGenerator.getInstance("DSA");
         kpg.initialize(512);
         pk = kpg.generateKeyPair();
         signature = Signature.getInstance("SHA/DSA");
         puk = pk.getPublic();
         pik = pk.getPrivate();
         signature.initSign(pik);

         /* 对正文内容进行序列化,并且实现数字签名 */
         System.out.print("...生成密钥完毕!\n\n开始进行正文序列化和RMI数字签名...");
         fileis = new FileInputStream(FilePathName);
         fileTxt = new byte[fileis.available()];
         fileis.read(fileTxt);
         signature.update(fileTxt);

         /* 进行安全注册和Remote Server绑定 */
         System.out.print("...RMI签名完成\n\n...注册安全管理器,并且开始绑定Remote Server...");
         System.setSecurityManager(new RMISecurityManager());
         rmiso = new RMISignObject(fileTxt,signature.sign(),puk);
         rmiss = new RMISignServer(rmiso);
         Naming.rebind(RemoteSerHost,rmiss);
         System.out.print("...Remote Server已经被成功绑定\n");
         System.out.println("\n生成公钥为:" + puk);
         System.out.println("\n生成私钥为:" + pik);
         System.out.println("\n经过RMI数字签名后的公钥:" + rmiso.puk);
        }
      catch(Exception e)
        {
         System.out.println("! Remote Server在启动时抛出例外:" + e.toString());
        }
     }
  }

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -