




已阅读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. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 巢湖安全教育培训基地课件
- 2025年快递初级考试题库及答案
- 2025四川成都彭州市卫健局下属事业单位招募医疗卫生辅助岗60人考试备考试卷【附答案】
- 秋招协警面试题库及答案
- 安庆市大观区招聘社区工作人员考试真题2024
- 中国工商银行重庆市分行招聘考试真题2024
- 邯郸魏县公安局招聘警务辅助岗位考试真题2024
- 黑龙江省体育局事业单位招聘考试真题2024
- 2025年度员工股权激励合同模板
- 山东威海海大医院有限公司招聘笔试题库2025
- 职业卫生模拟试题+答案
- 餐厅包场合同协议书范本
- 2025年鸡爪市场调研报告
- 景区廉洁管理制度
- 土方开挖工程安全监理细则
- 2022年医疗器械临床试验GCP考试题及答案
- 小学数学课程标准解读
- 妇产科学(甲)知到智慧树章节测试课后答案2024年秋浙江大学
- 无人机理论知识培训课件
- 《立在地球边上放号》《峨日朵雪峰之侧》比较阅读教案2024-2025学年高中语文必修上册
- 柴油发电机系统维修保养记录表
评论
0/150
提交评论