签名文件签名(java代码)

代码签名  时间:2021-04-08  阅读:()

package encryptdecrypt;import j ava.awt.event.ActionEvent;import j ava.awt.event.ActionListener;import java.io.File;import java.io.FileInputStream;import java.io.FileOutputStream;import java.io.Obj ectInputStream;import java.io.Obj ectOutputStream;import java.security.KeyPair;import java.security.KeyPairGenerator;import j ava.security.PrivateKey;import java.security.PublicKey;import javax.swing.JFileChooser;import javax.swing.JFrame;import j avax.swing.JMenu;import javax.swing.JMenuBar;import javax.swing.JMenuItem;import javax.swing.JOptionPane;import javax.swing.JScrollPane;import j avax.swing.JTextArea;import javax.swing.ScrollPaneConstants;public class FileSignature {

/**

*@param args

*/public static void main(String[]args) {

//TODO Auto-generated method stub

DemoWindow5 dw=new DemoWindow5("文件签名签 ");dw.setBounds(dw.getToolkit().getScreenSize().width/3,dw.getToolkit()

.getScreenSize().height/3,

dw.getToolkit().getScreenSize().width/3,dw.getToolkit()

.getScreenSize().height/3);dw.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);dw.setVisible(true);

}

}class DemoWindow5 extends JFrame implements ActionListener {

JMenuBar menuBar=new JMenuBar();

JMenu fileMenu=new JMenu("文件");

JMenuItem openMenuItem=new JMenuItem("打签文签件签 ");

JMenuItem saveMenuItem=new JMenuItem("保存文件");

JMenu signMenu=new JMenu("签名签签");

JMenuItem validateItem=new JMenuItem("签签文件");

JTextArea jta=new JTextArea();int v=S crollPaneConstants.VERTICAL_SCROLLBAR_AS_NEEDED;int h=S crollPaneConstants.HORIZONTAL_SCROLLBAR_AS_NEEDED;JScrollPane jsp=new JScrollPane(jta,v,h);public DemoWindow5(String title) {super(title);fileMenu.add(openMenuItem);fileMenu.add(saveMenuItem);signMenu.add(generateItem);signMenu.add(signItem);signMenu.add(validateItem);menuBar.add(fileMenu);menuBar.add(signMenu);this.setJMenuBar(menuBar);add(jsp);openMenuItem.addActionListener(this);saveMenuItem.addActionListener(this);generateItem.addActionListener(this);signItem.addActionListener(this);validateItem.addActionListener(this);

}public void actionPerformed(ActionEvent e) {

//TODO Auto-generated method stubif(e.getSource()==openMenuItem) {openFile();

}else if(e.getSource()==saveMenuItem) {

saveFile();

}else if(e.getSource()==generateItem) {generateKeys();

}else if(e.getSource()==signItem) {sign();

}else if(e.getSource()==validateItem) {validateSign();

}

}public void openFile() {

String fileName=null;

//System.getProperty("user.dir")是签得签用签签签当前签的签工签作签签目签;//如果签签中签签取签签签的签文签件签的签完签整签路签径签if(jfc.showOpenDialog(this)==JFileChooser.APPROVE_OPTION) {fileName=jfc.getSelectedFile().getPath();

System.out.println(fileName);

}if(fileName==null)return;try{

FileInputStream fis=new FileInputStream(fileName);byte[] text=new byte[fis.available()];fis.read(text);fis.close();jta.setText(new String(text));

}catch(Exception e1) {e1.printStackTrace();

}

}public void saveFile() {

String fileName=null;

));if(j fc.showSaveDialog(this)==JFileChooser.APPROVE_OPTION) {fileName=jfc.getSelectedFile().getPath();

}if(fileName==null)

return;try{

FileOutputStream fos=new FileOutputStream(fileName,false);fos.write(jta.getText().getBytes());fos.close();

}catch(Exception e1) {e1.printStackTrace();

}

}public void generateKeys() {try{

String fileName=null;

jfc.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY);if(jfc.showSaveDialog(this)==

JFileChooser.APPROVE_OPTION) {fileName=jfc.getSelectedFile().getPath();

}if(fileName==null)return;

File file=new File(fileName);if(!file.exists()) {file.mkdir();

}

//签建DSA密签签生签成签器签

KeyPairGenerator keygen=

keygen.initialize(1024);

//得到密签签

KeyPair keys=keygen.generateKeyPair();

PublicKey pubkey=keys.getPublic();

PrivateKey prikey=keys.getPrivate();

Obj ectOutputStream out=new ObjectOutputStream(new FileOutputStream(fileName+"/公签.dat"));out.writeObj ect(pubkey);out.close();

out=new Obj ectOutputStream(new

FileOutputStream(fileName

+"/私签.dat"));out.writeObj ect(prikey);out.close();

}catch(Exception e1) {e1.printStackTrace();

}

}public void sign() {try{

String fileName=null;

JFileChooser jfc=new JFileChooser();jfc.setDialogTitle("签入私签文签件签 ");if(jfc.showOpenDialog(this)==

JFileChooser.APPROVE_OPTION) {fileName=jfc.getSelectedFile().getPath();

}if(fileName==null)return;

//签取私签

ObjectInputStream ois=new ObjectInputStream(newFileInputStream(fileName));

PrivateKey prikey=(PrivateKey)ois.readObject();

//签建SHAlwithD SA签名签java.security.Signature dsa=j ava.security.Signature.getInstance(

"SHA1withDSA", "SUN");

//签置生成摘要的私签dsa.initSign(prikey);

//签文本区的文本签行签签名签签签dsa.update(jta.getText().getBytes("UTF-8"));

//得到签名签后签的签签名签摘签要签签byte[] signText=dsa.sign();

if(jfc.showSaveDialog(this)==

JFileChooser.APPROVE_OPTION) {fileName=jfc.getSelectedFile().getPath();

}

if(fileName==null)return;

FileOutputStream fos=new FileOutputStream(fileName);fos.write(signText);fos.close();

}catch(Exception e1) {e1.printStackTrace();

}

}public void validateSign() {try{

String fileName=null;

JFileChooser jfc=new JFileChooser();jfc.setDialogTitle("签入公签文签件签 ");if(jfc.showOpenDialog(this)==

JFileChooser.APPROVE_OPTION) {fileName=jfc.getSelectedFile().getPath();}if(fileName==null)return;

Obj ectInputStream in=new ObjectInputStream(newFileInputStream(fileName));

PublicKey pubkey=(PublicKey) in.readObject();jfc=new JFileChooser();jfc.setDialogTitle("打签签名签文签件签 ");if(jfc.showOpenDialog(this)==

JFileChooser.APPROVE_OPTION) {fileName=jfc.getSelectedFile().getPath();}if(fileName==null)return;

//从签名签文签件签签中签取签签名签摘签要签

FileInputStream fis=new FileInputStream(fileName);byte[] sigToVerfiy=new byte[fis.available()];fis.read(sigToVerfiy);fis.close();

//签建SHA1withD SA签名签java.security.Signature sig=j ava.security.Signature.getInstance(

"SHA1withDSA", "SUN");

//签置签签的签公签签sig.initVerify(pubkey);

//签签文本区sig.update(jta.getText().getBytes("UTF-8"));

JOptionPane.showMessageDialog(null, "签名不正确");}

}catch(Exception e1) {e1.printStackTrace();

}

}

}

野草云提供适合入门建站香港云服务器 年付138元起 3M带宽 2GB内存

野草云服务商在前面的文章中也有多次提到,算是一个国内的小众服务商。促销活动也不是很多,比较专注个人云服务用户业务,之前和站长聊到不少网友选择他们家是用来做网站的。这不看到商家有提供香港云服务器的优惠促销,可选CN2、BGP线路、支持Linux与windows系统,支持故障自动迁移,使用NVMe优化的Ceph集群存储,比较适合建站用户选择使用,最低年付138元 。野草云(原野草主机),公司成立于20...

快云科技:夏季大促销,香港VPS7.5折特惠,CN2 GIA线路; 年付仅不到五折巨惠,续费永久同价

快云科技怎么样?快云科技是一家成立于2020年的新起国内主机商,资质齐全 持有IDC ICP ISP等正规商家。我们秉承着服务于客户服务于大众的理念运营,机器线路优价格低。目前已注册用户达到5000+!主营产品有:香港弹性云服务器,美国vps和日本vps,香港物理机,国内高防物理机以及美国日本高防物理机!产品特色:全配置均20M带宽,架构采用KVM虚拟化技术,全盘SSD硬盘,RAID10阵列, 国...

RackNerd美国大硬盘服务器促销:120G SSD+192TB HDD,1Gbps大带宽,月付$599,促销美国月付$服务器促销带宽

racknerd怎么样?racknerd最近发布了一些便宜美国服务器促销,包括大硬盘服务器,提供120G SSD+192TB HDD,有AMD和Intel两个选择,默认32G内存,1Gbps带宽,每个月100TB流量,5个IP地址,月付$599。价格非常便宜,需要存储服务器的朋友可以关注一下。RackNerd主要经营美国圣何塞、洛杉矶、达拉斯、芝加哥、亚特兰大、新泽西机房基于KVM虚拟化的VPS、...

代码签名为你推荐
用户google360退出北京时间在国外如何把手机时间调回到中国北京时间?cisco2960cisco 2960 和3560字节跳动回应TikTok易主每天每夜要结束了主持人问关于抄袭的问题,权志龙很认真的回答不想说的,想在以后做好的那段话的音乐叫什上海市浦东新区人民法院民事判决书(2009)浦民三(知)初字第206号123456hd手机上有电话的标志,后面有个HD是什么意思欢迎光临本店宾馆欢迎语都有哪些? 越多越专业越好dedecms自动采集织梦采集侠的功能介绍kingcmsKingCMS 开始该则呢么设置呢?oscommerceOscommerce,Magento, Zen-cart 比较,哪个好一点!
大庆服务器租用 linuxapache虚拟主机 主机屋 java主机 googleapps 韩国加速器 512au 500m空间 双拼域名 789电视 699美元 吉林铁通 cdn网站加速 金主 godaddy空间 中国电信宽带测速 wordpress空间 winserver2008r2 ftp服务器是什么 时间同步服务器地址 更多