高级编程:三重DES加密程序(1)

文章作者 100test 发表时间 2007:03:14 16:32:58
来源 100Test.Com百考试题网


import java.awt.*. import java.awt.event.*. import javax.swing.*. import java.io.*. import java.security.*. import javax.crypto.*. import javax.crypto.spec.*. /** 文件名:FileEncrypter.java JDK:1.40以上 说明:文件加密 加密方法:三重DES加密 加密过程:对选中的文件加密后在同文件夹下生成一个增加了".tdes" 扩展名的加密文件解密过程:对选中的加密文件(必须有".tdes"扩展名)进行解密 */ public class FileEncrypter extends JFrame{ public static final int WIDTH = 550. public static final int HEIGHT = 200. public static void main(String args[]) { FileEncrypter fe = new FileEncrypter(). fe.show(). }


FileEncrypter(){ this.setSize(WIDTH,HEIGHT). this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE). this.setResizable(false). Toolkit tk = Toolkit.getDefaultToolkit(). Dimension screenSize = tk.getScreenSize(). this.setLocation((screenSize.width - WIDTH)/2, (screenSize.height - HEIGHT)/2). this.setTitle("文件加密器(TriDES)"). Container c = this.getContentPane(). c.setLayout( new FlowLayout()). final FilePanel fp = new FilePanel("文件选择"). c.add(fp). final KeyPanel pp = new KeyPanel("密码"). c.add(pp). JButton jbE = new JButton("加密"). c.add(jbE). jbE.addActionListener(new ActionListener(){ public void actionPerformed(ActionEvent event){ File file = new File(fp.getFileName()). if (file.exists()) encrypt(file.getAbsoluteFile(),pp.getKey()). else JOptionPane.showMessageDialog( null,"请选择文件!","提示",JOptionPane.OK_OPTION). } }). JButton jbD = new JButton("解密"). c.add(jbD). jbD.addActionListener(new ActionListener(){ public void actionPerformed(ActionEvent event){ File file = new File(fp.getFileName()). if (file.exists()) decrypt(file.getAbsoluteFile(),pp.getKey()). else JOptionPane.showMessageDialog(null,"请选择文件!","提示",JOptionPane.OK_OPTION). } }). } /** 加密函数 输入: 要加密的文件,密码(由0-F组成,共48个字符,表示3个8位的密码)如: AD67EA2F3BE6E5ADD368DFE03120B5DF92A8FD8FEC2F0746 其中: AD67EA2F3BE6E5AD DES密码一 D368DFE03120B5DF DES密码二 92A8FD8FEC2F0746 DES密码三 输出: 对输入的文件加密后,保存到同一文件夹下增加了".tdes"扩展名的文件中。 */ private void encrypt(File fileIn,String sKey){ try{ if(sKey.length() == 48){ byte[] bytK1 = getKeyByStr(sKey.substring(0,16)). byte[] bytK2 = getKeyByStr(sKey.substring(16,32)). byte[] bytK3 = getKeyByStr(sKey.substring(32,48)). FileInputStream fis = new FileInputStream(fileIn). byte[] bytIn = new byte[(int)fileIn.length()]. for(int i = 0.i< fileIn.length().i ){ bytIn[i] = (byte)fis.read(). } //加密 byte[] bytOut = encryptByDES(encryptByDES(encryptByDES(bytIn,bytK1),bytK2),bytK3). String fileOut = fileIn.getPath() ".tdes". FileOutputStream fos = new FileOutputStream(fileOut). for(int i = 0.i< bytOut.length.i ){ fos.write((int)bytOut[i]). } fos.close(). JOptionPane.showMessageDialog(this,"加密成功!","提示",JOptionPane.OK_OPTION). }else JOptionPane.showMessageDialog( this,"密码长度必须等于48!","错误信息",JOptionPane.ERROR_MESSAGE). }catch(Exception e){ e.printStackTrace(). } }

相关文章


高级编程:三重DES加密程序(3)
使用Java操作文本文件的方法详解
高级编程:三重DES加密程序(1)
Java中的StringStringBufferMath类
澳大利亚华人论坛
考好网
日本华人论坛
华人移民留学论坛
英国华人论坛