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();
}
}
}
目前国内云计算市场竞争异常激烈,尤其是国内的腾讯云、阿里云、景安等商家促销活动一波接一波的进行,对于有需要的用户确实得到不小的实惠。但是这样给予国内的主机商确实是比较大的打击,毕竟这些商家的背景和实例强劲,即便是贴本补贴优惠,也是不怕的。前两年阿里一家各种活动促销,确实在国内市场占据主要的市场地位,腾讯云开始两年没有较大的吸引用户,不过这两年的发展还是比较稳健的。我们很多网友在之前肯定也享受到一些...
diyvm怎么样?diyvm是一家国内成立时间比较久的主机商家了,大约在6年前站长曾经用过他家的美国机房的套餐,非常稳定,适合做站,目前商家正在针对香港沙田机房的VPS进行促销,给的是五折优惠,续费同价,香港沙田机房走的是CN2直连的线路,到大陆地区的速度非常好,DiyVM商家采用小带宽不限流量的形式,带宽2Mbps起步,做站完全够用,有需要的朋友可以入手。diyvm优惠码:五折优惠码:OFF50...
百驰云成立于2017年,是一家新国人IDC商家,且正规持证IDC/ISP/CDN,商家主要提供数据中心基础服务、互联网业务解决方案,及专属服务器租用、云服务器、云虚拟主机、专属服务器托管、带宽租用等产品和服务。百驰云提供源自大陆、香港、韩国和美国等地骨干级机房优质资源,包括BGP国际多线网络,CN2点对点直连带宽以及国际顶尖品牌硬件。专注为个人开发者用户,中小型,大型企业用户提供一站式核心网络云端...