签名文件签名(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();

}

}

}

牦牛云(3.5USD/月 )阿里云国际版云服务器 1核1G40G

收到好多消息,让我聊一下阿里云国际版本,作为一个阿里云死忠粉,之前用的服务器都是阿里云国内版的VPS主机,对于现在火热的阿里云国际版,这段时间了解了下,觉得还是有很多部分可以聊的,毕竟,实名制的服务器规则导致国际版无需实名这一特点被无限放大。以前也写过几篇综合性的阿里云国际版vps的分析,其中有一点得到很多人的认同,那句是阿里云不管国内版还是国际版的IO读写速度实在不敢恭维,相对意义上的,如果在这...

ShineServers(5美元/月)荷兰VPS、阿联酋VPS首月五折/1核1G/50GB硬盘/3TB流量/1Gbps带宽

优惠码50SSDOFF 首月5折50WHTSSD 年付5折15OFF 85折优惠,可循环使用荷兰VPSCPU内存SSD带宽IPv4价格购买1核1G50G1Gbps/3TB1个$ 9.10/月链接2核2G80G1Gbps/5TB1个$ 12.70/月链接2核3G100G1Gbps/7TB1个$ 16.30/月链接3核4G150G1Gbps/10TB1个$ 18.10/月链接阿联酋VPSCPU内存SS...

tmhhost(100元/季)自带windows系统,香港(三网)cn2 gia、日本cn2、韩国cn2、美国(三网)cn2 gia、美国cn2gia200G高防

tmhhost可谓是相当熟悉国内网络情况(资质方面:ISP\ICP\工商齐备),专业售卖海外高端优质线路的云服务器和独立服务器,包括了:香港的三网cn2 gia、日本 cn2、日本软银云服务器、韩国CN2、美国三网cn2 gia 云服务器、美国 cn2 gia +200G高防的。另外还有国内云服务器:镇江BGP 大连BGP数据盘和系统盘分开,自带windows系统,支持支付宝付款和微信,简直就是专...

代码签名为你推荐
Usercuteftp腾讯公司电话腾讯公司总部电话多少爱买网超艾比安高达厉害吗,今天在网上看到的万代的果断入手了,168贵吗,不知道这款高达厉不厉害discuz论坛Discuz论坛是什么啊?discuzx2DISCUZ X2是PHP还是ASP的?管理员密码无线路由器管理员密码怎么填帝国cms教程如何使用帝国CMS模板搜索引擎教程搜索引擎的信息检索方法网站日志iis日志详解,网站日志中的每一个数据代表什么无忧团购网现在最好的团购网站有哪些?
Oray域名注册服务商 高防服务器租用 vps交流 中国万网虚拟主机 x3220 堪萨斯服务器 安云加速器 美国主机论坛 directadmin 彩虹ip 创梦 网通服务器托管 爱奇艺vip免费领取 双12 创建邮箱 联通网站 上海电信测速 东莞服务器托管 中国linux 杭州电信宽带优惠 更多