signsend.java

来自「高等院校计算机应用技术硕士研究生课程,高级计算机网络程序设计实例子代码,SECU」· Java 代码 · 共 76 行

JAVA
76
字号
import java.io.*;
import java.security.*;

class signSend
{
    public static void main(String[] args) 
    {
        if (args.length != 1) 
        {
            System.out.println("Usage: GenSig nameOfFileToSign");
        }
        else try
        {

            //密钥生成器
            KeyPairGenerator keyGen = KeyPairGenerator.getInstance("DSA", "SUN");
            //安全随机数
            SecureRandom random = SecureRandom.getInstance("SHA1PRNG", "SUN");

            //初始化密钥生成器
            keyGen.initialize(1024, random);

            //得到公钥、私钥
            KeyPair pair = keyGen.generateKeyPair();
            PrivateKey priv = pair.getPrivate();
            PublicKey pub = pair.getPublic();


            //生成签名对象
            Signature dsa = Signature.getInstance("SHA1withDSA", "SUN"); 

	    //用公钥初始化签名对象
            dsa.initSign(priv);
                        
	    //提取文件流
            FileInputStream fis = new FileInputStream(args[0]);
            BufferedInputStream bufin = new BufferedInputStream(fis);
            byte[] buffer = new byte[1024];
            int len;
            while (bufin.available() != 0) {
                len = bufin.read(buffer);
                dsa.update(buffer, 0, len);
                };

     
            bufin.close();

	    //使用签名对象生成签名
            byte[] realSig = dsa.sign();
        
            //保存签名对象
            FileOutputStream sigfos = new FileOutputStream("sig");
            sigfos.write(realSig);

            sigfos.close();


            //保存公钥
            byte[] key = pub.getEncoded();
            FileOutputStream keyfos = new FileOutputStream("suepk");
            keyfos.write(key);

            keyfos.close();

	} 
	catch (Exception e) 
	{
            System.err.println("Caught exception " + e.toString());
        }

    };

}


⌨️ 快捷键说明

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