文件签名(java代码).docx_第1页
文件签名(java代码).docx_第2页
文件签名(java代码).docx_第3页
文件签名(java代码).docx_第4页
文件签名(java代码).docx_第5页
已阅读5页,还剩3页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

package encryptdecrypt;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import java.io.File;import java.io.FileInputStream;import java.io.FileOutputStream;import java.io.ObjectInputStream;import java.io.ObjectOutputStream;import java.security.KeyPair;import java.security.KeyPairGenerator;import java.security.PrivateKey;import java.security.PublicKey;import javax.swing.JFileChooser;import javax.swing.JFrame;import javax.swing.JMenu;import javax.swing.JMenuBar;import javax.swing.JMenuItem;import javax.swing.JOptionPane;import javax.swing.JScrollPane;import javax.swing.JTextArea;import javax.swing.ScrollPaneConstants;public class FileSignature /* * param args */public static void main(String args) / TODO Auto-generated method stubDemoWindow5 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 generateItem = new JMenuItem(生成密钥对);JMenuItem signItem = new JMenuItem(签名文件);JMenuItem validateItem = new JMenuItem(验证文件);JTextArea jta = new JTextArea();int v = ScrollPaneConstants.VERTICAL_SCROLLBAR_AS_NEEDED;int h = ScrollPaneConstants.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)是获得用户当前的工作目录JFileChooser jfc = new JFileChooser(System.getProperty(user.dir);jfc.setDialogTitle(打开文件);/ 如果选中,获取选择的文件的完整路径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 bytefis.available();fis.read(text);fis.close();jta.setText(new String(text); catch (Exception e1) e1.printStackTrace();public void saveFile() String fileName = null;JFileChooser jfc = new JFileChooser(System.getProperty(user.dir);jfc.setDialogTitle(保存文件);if (jfc.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;JFileChooser jfc = new JFileChooser();jfc.setDialogTitle(生成密钥对);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 = KeyPairGenerator.getInstance(DSA);/ 采用1024位DSA密钥keygen.initialize(1024);/ 得到密钥对KeyPair keys = keygen.generateKeyPair();PublicKey pubkey = keys.getPublic();PrivateKey prikey = keys.getPrivate();ObjectOutputStream out = new ObjectOutputStream(new FileOutputStream(fileName + /公钥.dat);out.writeObject(pubkey);out.close();out = new ObjectOutputStream(new FileOutputStream(fileName+ /私钥.dat);out.writeObject(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(new FileInputStream(fileName);PrivateKey prikey = (PrivateKey) ois.readObject();/ 创建SHAlwithDSA签名类java.security.Signature dsa = java.security.Signature.getInstance(SHA1withDSA, SUN);/ 设置生成摘要的私钥dsa.initSign(prikey);/ 对文本区的文本进行签名验证dsa.update(jta.getText().getBytes(UTF-8);/ 得到签名后的签名摘要值byte signText = dsa.sign();jfc = new JFileChooser();jfc.setDialogTitle(保存签名文件);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;ObjectInputStream in = new ObjectInputStream(new FileInputStream(fileName);PublicKey pubkey = (PublicKey) in.readObject();jfc = new JFileChooser();jfc.setDialogTitle(打开签名文件);if (jf

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论