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

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


/** 解密函数 输入: 要解密的文件,密码(由0-F组成,共48个字符,表示3个8位的密码)如: AD67EA2F3BE6E5ADD368DFE03120B5DF92A8FD8FEC2F0746 其中: AD67EA2F3BE6E5AD DES密码一 D368DFE03120B5DF DES密码二 92A8FD8FEC2F0746 DES密码三 输出: 对输入的文件解密后,保存到用户指定的文件中。 */ private void decrypt(File fileIn,String sKey){ try{ if(sKey.length() == 48){ String strPath = fileIn.getPath(). if(strPath.substring(strPath.length()-5).toLowerCase().equals(".tdes")) strPath = strPath.substring(0,strPath.length()-5). else{ JOptionPane.showMessageDialog(this,"不是合法的加密文件!","提示",JOptionPane.OK_OPTION). return. } JFileChooser chooser = new JFileChooser(). chooser.setCurrentDirectory(new File(".")). chooser.setSelectedFile(new File(strPath)). //用户指定要保存的文件 int ret = chooser.showSaveDialog(this). if(ret==JFileChooser.APPROVE_OPTION){ 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 = decryptByDES(decryptByDES(decryptByDES(bytIn,bytK3),bytK2),bytK1). File fileOut = chooser.getSelectedFile(). fileOut.createNewFile(). 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){ JOptionPane.showMessageDialog(this,"解密失败,请核对密码!","提示",JOptionPane.OK_OPTION). } } /** 用DES方法加密输入的字节 bytKey需为8字节长,是加密的密码 */ private byte[] encryptByDES(byte[] bytP,byte[] bytKey) throws Exception{ DESKeySpec desKS = 

相关文章


JSP数据库操作例程-数据分页显示
Struts中不同的Action和ActionForm组合
高级编程:三重DES加密程序(2)
高级编程:三重DES加密程序(3)
使用Java操作文本文件的方法详解
澳大利亚华人论坛
考好网
日本华人论坛
华人移民留学论坛
英国华人论坛