📄 des_encrypt.java
字号:
FileInputStream f = new FileInputStream("Skey_RSA_priv.dat");
ObjectInputStream b = new ObjectInputStream(f);
RSAPrivateKey prk = (RSAPrivateKey)b.readObject();
Cipher cipher = Cipher.getInstance("RSA");
cipher.init(Cipher.UNWRAP_MODE, prk);
FileInputStream des = new FileInputStream("DES_RSAed.dat");
ObjectInputStream b1 = new ObjectInputStream(des);
byte[] wrapedkey = (byte[]) b1.readObject();
Key key = cipher.unwrap(wrapedkey, "DESede", Cipher.SECRET_KEY);
FileOutputStream fos2=new FileOutputStream("DES_key2.dat");
ObjectOutputStream b2=new ObjectOutputStream(fos2);
b2.writeObject(key);
fos2.close();
b2.close();
jTextArea1.append("DES密钥解密完毕,DES密钥保存在当前目录中。\n");
}catch(Exception e){System.out.println(e);}
}//GEN-LAST:event_jB5ActionPerformed
private void jB9ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jB9ActionPerformed
try{
FileInputStream f = new FileInputStream("Skey_RSA_pub.dat");
ObjectInputStream b = new ObjectInputStream(f);
RSAPublicKey pbk = (RSAPublicKey)b.readObject();
Cipher cipher = Cipher.getInstance("RSA");
cipher.init(Cipher.WRAP_MODE, pbk);
FileInputStream des = new FileInputStream("DES_key.dat");
ObjectInputStream b1 = new ObjectInputStream(des);
SecretKey key = (SecretKey)b1.readObject();
byte[] wrapedkey = cipher.wrap(key);
OutputStream fos = new FileOutputStream("DES_RSAed.dat");
ObjectOutputStream b2=new ObjectOutputStream(fos);
b2.writeObject(wrapedkey);
b2.close();
fos.close();
jTextArea1.append("DES密钥加密完毕,加密后的DES密钥保存在当前目录中。\n");
}catch(Exception e){System.out.println(e);}
}//GEN-LAST:event_jB9ActionPerformed
private void jB4MouseClicked(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_jB4MouseClicked
try{
KeyPairGenerator kpg =KeyPairGenerator.getInstance("RSA");
kpg.initialize(1024);
KeyPair kp=kpg.genKeyPair();
PublicKey pbk=kp.getPublic();
PrivateKey prk=kp.getPrivate();
FileOutputStream fos1=new FileOutputStream("Skey_RSA_pub.dat");
ObjectOutputStream b1=new ObjectOutputStream(fos1);
b1.writeObject(pbk);
FileOutputStream fos2=new FileOutputStream("Skey_RSA_priv.dat");
ObjectOutputStream b2=new ObjectOutputStream(fos2);
b2.writeObject(prk);
fos1.close();
fos2.close();
b1.close();
b2.close();
jTextArea1.append("新的RSA密钥已生成,并保存在当前目录中。\n");
}catch(Exception e){}
}//GEN-LAST:event_jB4MouseClicked
private void jB7ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jB7ActionPerformed
try{KeyGenerator kg = KeyGenerator.getInstance("DESede");
kg.init(168);
SecretKey k = kg.generateKey();
FileOutputStream f = new FileOutputStream("DES_key.dat");
ObjectOutputStream b =new ObjectOutputStream(f);
b.writeObject(k);
f.close();
b.close();
jTextArea1.append("新的DSE密钥已经生成,并保存在当前目录中。\n");
}catch(Exception e){}
}//GEN-LAST:event_jB7ActionPerformed
private void jB10MouseClicked(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_jB10MouseClicked
try{
MessageDigest m = MessageDigest.getInstance("MD5");
FileInputStream fin = new FileInputStream(file);
DigestInputStream din = new DigestInputStream(fin,m);
while(din.read() != -1);
byte[] data =m.digest(); //计算解密后的文件的消息摘要,用于验证签名。
FileInputStream f2 = new FileInputStream("Sign2.dat");
int num2 = f2.available();
byte[] signeddata = new byte[num2];
f2.read(signeddata);
FileInputStream f3 = new FileInputStream("Skey_RSA_pub.dat");
ObjectInputStream b = new ObjectInputStream(f3);
RSAPublicKey pbk = (RSAPublicKey)b.readObject();
Signature s = Signature.getInstance("MD5WithRSA");
s.initVerify(pbk);
s.update(data);
if(s.verify(signeddata))
jTextArea1.append("通过签名验证。\n");
else
jTextArea1.append("注意!没有通过签名验证。\n");
f2.close();
f3.close();
b.close();
}catch(Exception e){System.out.println(e);}
}//GEN-LAST:event_jB10MouseClicked
private void jB6MouseClicked(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_jB6MouseClicked
f=new Frame();
f.setLocation(300,300);
f.setSize(600,400);
f.addWindowListener(new WindowAdapter(){
public void windowClosed(WindowEvent e){
System.exit(0);
}
});
fd.setVisible(true);
strfile=fd.getDirectory()+fd.getFile();
if(fd.getFile() ==null) jTextField1.setText("");
else jTextField1.setText(strfile);
}//GEN-LAST:event_jB6MouseClicked
private void jB8MouseClicked(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_jB8MouseClicked
try{FileInputStream f = new FileInputStream("DES_key.dat");
ObjectInputStream ob = new ObjectInputStream(f);
Key k = (Key)ob.readObject();
Cipher cp = Cipher.getInstance("DESede");
cp.init(Cipher.DECRYPT_MODE,k);
FileInputStream in = new FileInputStream("DESed.dat");
FileOutputStream out = new FileOutputStream("Temp.dat");
CipherOutputStream cout = new CipherOutputStream(out,cp);
int b = 0;
while((b=in.read()) != -1){
cout.write(b);
}
cout.close();
out.close();
in.close();
FileInputStream in3 = new FileInputStream("Temp.dat");
FileOutputStream out2 = new FileOutputStream("Sign2.dat");
byte[] buf = new byte[128];
int num3=in3.read(buf);
file= new String(buf).trim();
for(int i = 0;i<128;i++){
out2.write(in3.read());
}
out2.close();
FileOutputStream out3 = new FileOutputStream(file);
while((b=in3.read()) != -1){
out3.write(b);
}
out3.close();
in3.close();
File delf = new File("Temp.dat");
if(delf.exists())delf.delete();
jTextArea1.append("解密完毕,解密后的文件保存在当前目录中。\n");
}catch(Exception e){System.out.println(e);}
}//GEN-LAST:event_jB8MouseClicked
private void jB3MouseClicked(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_jB3MouseClicked
try{FileInputStream f = new FileInputStream("DES_key2.dat");
ObjectInputStream ob = new ObjectInputStream(f);
Key k = (Key)ob.readObject();
Cipher cp = Cipher.getInstance("DESede");
cp.init(Cipher.ENCRYPT_MODE,k);
FileOutputStream out = new FileOutputStream("DESed.dat");
CipherOutputStream cout = new CipherOutputStream(out,cp);
byte[] buf = new byte[128];
byte[] buff =new byte[128];
for(int i=0;i<128;i++){
buff[i] = 0;
}
buf = fd.getFile().getBytes();
for(int i = 0;i<buf.length;i++){
buff[i]=buf[i];
}
cout.write(buff);
FileInputStream in = new FileInputStream("Sign.dat");
int b = 0;
while((b=in.read()) != -1){
cout.write(b);
}
in = new FileInputStream(strfile);
while((b=in.read()) != -1){
cout.write(b);
}
cout.close();
out.close();
in.close();
jTextArea1.append("加密完毕,加密后的文件保存在当前目录中。\n");
}catch(Exception e){System.out.println(e);}
}//GEN-LAST:event_jB3MouseClicked
private void jB2MouseClicked(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_jB2MouseClicked
try{
FileInputStream f = new FileInputStream("MD5.dat");
int num = f.available();
byte[] data = new byte[num];
f.read(data);
FileInputStream f2 = new FileInputStream("Skey_RSA_priv.dat");
ObjectInputStream b = new ObjectInputStream(f2);
RSAPrivateKey prk = (RSAPrivateKey)b.readObject();
Signature s =Signature.getInstance("MD5WithRSA");
s.initSign(prk);
s.update(data);
byte[] signeddata = s.sign();
int i;
jTextArea1.append("签名:");
for(i = 0;i<data.length;i++){
jTextArea1.append(signeddata[i]+",");
}
jTextArea1.append("\n");
FileOutputStream f3 = new FileOutputStream("Sign.dat");
f3.write(signeddata);
f.close();
f2.close();
f3.close();
}catch(Exception e){}
}//GEN-LAST:event_jB2MouseClicked
private void jB1MouseClicked(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_jB1MouseClicked
try{
MessageDigest m = MessageDigest.getInstance("MD5");
FileInputStream fin = new FileInputStream(strfile);
DigestInputStream din = new DigestInputStream(fin,m);
while(din.read() != -1);
byte s[] =m.digest();
String result = "";
for (int i =0;i<s.length;i++){
result+=Integer.toHexString((0x000000ff & s[i]) | 0xffffff00).substring(6);
}
jTextArea1.append("MD5:"+result+"\n");
FileOutputStream f3 = new FileOutputStream("MD5.dat");
f3.write(s);
fin.close();
din.close();
f3.close();
}catch(Exception e){}
}//GEN-LAST:event_jB1MouseClicked
/**
* @param args the command line arguments
*/
public static void main(String args[]) {
java.awt.EventQueue.invokeLater(new Runnable() {
public void run() {
DES_encrypt DES = new DES_encrypt();
DES.setTitle("RSA/DES加密");
DES.setVisible(true);
}
});
}
// Variables declaration - do not modify//GEN-BEGIN:variables
private javax.swing.JButton jB1;
private javax.swing.JButton jB10;
private javax.swing.JButton jB2;
private javax.swing.JButton jB3;
private javax.swing.JButton jB4;
private javax.swing.JButton jB5;
private javax.swing.JButton jB6;
private javax.swing.JButton jB7;
private javax.swing.JButton jB8;
private javax.swing.JButton jB9;
private javax.swing.JLabel jLabel2;
private javax.swing.JLabel jLabel3;
private javax.swing.JPanel jPanel1;
private javax.swing.JPanel jPanel2;
private javax.swing.JPanel jPanel3;
public javax.swing.JScrollPane jScrollPane1;
public static javax.swing.JTextArea jTextArea1;
private javax.swing.JTextField jTextField1;
// End of variables declaration//GEN-END:variables
private Frame f;
FileDialog fd = new FileDialog(f,"打开文件",FileDialog.LOAD);
private String strfile = "";
private String file = "";
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -