有关数字签名的东东

import java.io.*;
import java.security.*;

/**
 * <p>Title: 数字签名工具类</p>
 * <p>Description: 使用非对称密匙的私匙对输入信息加密</p>
 * <p>Copyright: Copyright (c) 2003</p>
 * <p>Company: </p>
 * @author not galaxyp
 * @version 1.0
 */

public class DSAUtil {
  public DSAUtil() {
  }
  /*
   * 根据传入的密匙文件路径加密信息,并保存到指定的目录下
   * @param pOrgiInfo 要加密的信息
   * @param pPrikeyPath 加密的私匙路径和文件名
   * @param pInfoPath 保存密文的路径
   */
  private void encryptInfo(String pOrgiInfo,String pPrikeyPath,String pInfoPath)throws Exception{
    ObjectInputStream in=new ObjectInputStream(new FileInputStream(pPrikeyPath));
    PrivateKey myprikey=(PrivateKey)in.readObject();
    Signature signet=Signature.getInstance("DSA");
    signet.initSign(myprikey);
    signet.update(pOrgiInfo.getBytes());
    byte[] signed=signet.sign();
    ObjectOutputStream out=new ObjectOutputStream(new FileOutputStream(pInfoPath+"\\out.dat"));
    out.writeObject(pOrgiInfo);
    out.writeObject(signed);
    out.close();
  }
  public static void main(String[] args) {
    DSAUtil DSAUtil1 = new DSAUtil();
    if(args == null || args.length != 3){
      System.out.println("没有输入必要的信息");
      System.out.println("\t参数一:要加密的信息");
      System.out.println("\t参数二:私匙文件完整路径和文件名");
      System.out.println("\t参数三:保存密文的路径,文件名为out.dat");
      return;
    }
    String info = args[0];
    String pPrikeyPath = args[1];
    String pInfoPath = args[2];
    try{
      DSAUtil1.encryptInfo(info,pPrikeyPath,pInfoPath);
    }catch(Exception e){
      e.printStackTrace();
      System.out.println("签名失败");
    }
  }

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值