📄 signsend.java
字号:
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 + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -