加密解密源程序.doc

上传人:沈*** 文档编号:135291034 上传时间:2022-08-15 格式:DOC 页数:22 大小:79.50KB
收藏 版权申诉 举报 下载
加密解密源程序.doc_第1页
第1页 / 共22页
加密解密源程序.doc_第2页
第2页 / 共22页
加密解密源程序.doc_第3页
第3页 / 共22页
资源描述:

《加密解密源程序.doc》由会员分享,可在线阅读,更多相关《加密解密源程序.doc(22页珍藏版)》请在装配图网上搜索。

1、java程序实现的排列码加密解密程序:源程序:import java.awt.Color;import java.awt.Dimension;import java.awt.Toolkit;import java.awt.event.MouseAdapter;import java.awt.event.MouseEvent;import java.io.BufferedWriter;import java.io.File;import java.io.FileInputStream;import java.io.FileNotFoundException;import java.io.File

2、OutputStream;import java.io.FileReader;import java.io.FileWriter;import java.io.PrintStream;import java.util.ArrayList;import java.util.Random;import java.util.Scanner;import javax.swing.JButton;import javax.swing.JFileChooser;import javax.swing.JFrame;import javax.swing.JLabel;import javax.swing.JO

3、ptionPane;import javax.swing.JPasswordField;import javax.swing.JTextField;public class EncryPL private JFrame jfra_Encry; private JLabel jlab_Sourc; private JLabel jlab_Dest; private JLabel jlab_Key; private JLabel jlab_Err; private JTextField jtext_Sourc; private JTextField jtext_Dest; private JPas

4、swordField jtext_Key; private JButton jbtn_Encrypt; private JButton jbtn_UnEncrypt; private JButton jbtn_Encrypt_Dot; private JButton jbtn_UnEncrypt_Dot; private String str_AllCodeFile = AllCodeFile.txt; private String str_SourceFile; private String str_DestFile; private String str_KeyText; private

5、int AllCode = new int256244; private int int_Key = new int32; private byte byte_Key = new byte4; private int int_KeyStick = new int32; public static void main(String args) EncryPL EPL = new EncryPL(); EPL.Init_Encry(); private void Init_Encry() this.jfra_Encry = new JFrame(); this.jfra_Encry.setTitl

6、e(排列码加解密); this.jfra_Encry.setSize(500, 400); Dimension screensize = Toolkit.getDefaultToolkit().getScreenSize(); this.jfra_Encry.setLocation(screensize.width - this.jfra_Encry.getWidth() / 2, (screensize.height - this.jfra_Encry.getHeight() / 2); this.jfra_Encry.setDefaultCloseOperation(3); this.jf

7、ra_Encry.setResizable(false); this.jfra_Encry.setLayout(null); this.jfra_Encry.setVisible(true); this.jlab_Sourc = new JLabel(); this.jlab_Sourc.setText(源文件:); this.jlab_Dest = new JLabel(); this.jlab_Dest.setText(终文件:); this.jlab_Key = new JLabel(); this.jlab_Key.setText(密 钥 :); this.jlab_Err = new

8、 JLabel(); this.jlab_Err.setForeground(Color.RED); this.jtext_Sourc = new JTextField(); this.jtext_Dest = new JTextField(); this.jtext_Key = new JPasswordField(); this.jbtn_Encrypt = new JButton(); this.jbtn_Encrypt.setText(加密); this.jbtn_UnEncrypt = new JButton(); this.jbtn_UnEncrypt.setText(解密); t

9、his.jbtn_Encrypt_Dot = new JButton(); this.jbtn_Encrypt_Dot.setText(.); this.jbtn_UnEncrypt_Dot = new JButton(); this.jbtn_UnEncrypt_Dot.setText(.); this.jfra_Encry.add(this.jlab_Sourc); this.jfra_Encry.add(this.jlab_Dest); this.jfra_Encry.add(this.jlab_Key); this.jfra_Encry.add(this.jtext_Sourc); t

10、his.jfra_Encry.add(this.jtext_Dest); this.jfra_Encry.add(this.jtext_Key); this.jfra_Encry.add(this.jbtn_Encrypt); this.jfra_Encry.add(this.jbtn_UnEncrypt); this.jfra_Encry.add(this.jbtn_Encrypt_Dot); this.jfra_Encry.add(this.jbtn_UnEncrypt_Dot); this.jfra_Encry.add(this.jlab_Err); this.jlab_Sourc.se

11、tBounds(60, 50, 50, 30); this.jtext_Sourc.setBounds(110, 50, 270, 30); this.jlab_Dest.setBounds(60, 130, 50, 30); this.jtext_Dest.setBounds(110, 130, 270, 30); this.jlab_Key.setBounds(60, 210, 50, 30); this.jtext_Key.setBounds(110, 210, 270, 30); this.jbtn_Encrypt.setBounds(160, 290, 80, 30); this.j

12、btn_UnEncrypt.setBounds(280, 290, 80, 30); this.jbtn_Encrypt_Dot.setBounds(385, 50, 50, 30); this.jbtn_UnEncrypt_Dot.setBounds(385, 130, 50, 30); this.jlab_Err.setBounds(220, 30, 150, 20); this.jbtn_Encrypt_Dot.addMouseListener(new EncryPL.MouseListener_jframe(this); this.jbtn_UnEncrypt_Dot.addMouse

13、Listener(new EncryPL.MouseListener_jframe(this); this.jbtn_Encrypt.addMouseListener(new EncryPL.MouseListener_jframe(this); this.jbtn_UnEncrypt.addMouseListener(new EncryPL.MouseListener_jframe(this); private int byteToint(byte bt) int int_binary = new int8; String str_bt = Integer.toBinaryString(bt

14、); int length = str_bt.length(); if (length = 8) str_bt = str_bt.substring(24, 32); for (int i = 0; i 8 - length; +i) int_binaryi = 0; length = str_bt.length(); int j = 0; for (int i = 8 - length; i 8; +i) int_binaryi = Integer.valueOf(str_bt.substring(j, j + 1).intValue(); +j; return int_binary; pr

15、ivate byte intTobyte(int int_binary) int length = int_binary.length; byte byte_Zero = 0; byte byte_Num = -128, 64, 32, 16, 8, 4, 2, 1 ; for (int i = 0; i length; +i) if (int_binaryi != 1) continue; byte_Zero = (byte)(byte_Zero + byte_Numi); return byte_Zero; private boolean SaveFile(byte byte_FileMe

16、ss, String str_File) int length = byte_FileMess.length; File file = new File(str_File); if (file.exists() file.delete(); try file.createNewFile(); FileOutputStream fos_File = new FileOutputStream(file); fos_File.write(byte_FileMess); fos_File.close(); return true; catch (Exception e) e.printStackTra

17、ce(); System.out.println(SaveFile 错误); return false; private byte ReadFile(String str_File) File file = new File(str_File); try FileInputStream fis_File = new FileInputStream(file); int length = fis_File.available(); byte byte_Mess = new bytelength; fis_File.read(byte_Mess); fis_File.close(); return

18、 byte_Mess; catch (Exception e) e.printStackTrace(); System.out.println(ReadFile 错误); return null; private void SaveFileBinary(int int_FileMess_Mi) StringBuffer str_FileBinary = new StringBuffer(this.str_DestFile); int offset = this.str_DestFile.length() - 4; str_FileBinary = str_FileBinary.insert(o

19、ffset, (Binary); String str_FileBin = str_FileBinary.toString(); File file = new File(str_FileBin); if (file.exists() file.delete(); try file.createNewFile(); catch (Exception e) e.printStackTrace(); System.out.println(SaveFileBinary 错误); try BufferedWriter bw = new BufferedWriter(new FileWriter(str

20、_FileBin); int length = int_FileMess_Mi.length; for (int i = 0; i length; +i) bw.write(int_FileMess_Mii + ); if (i + 1) % 100 != 0) continue; bw.newLine(); bw.flush(); bw.close(); catch (Exception e) e.printStackTrace(); System.out.println(SaveFileBinary 错误); private int get_path_Code() int Table_Co

21、de = 0; int Line_Code = 0; for (int i = 0; i 8; +i) Table_Code = (int)(Table_Code + this.int_Keyi * Math.pow(2.0D, 7 - i); Line_Code = (int)(Line_Code + this.int_Key(8 + i) * Math.pow(2.0D, 7 - i); Line_Code %= 24; return this.AllCodeTable_CodeLine_Code; private int get_noDoor_Code(int path_Code) in

22、t noDoor_Code = new int4; for (int i = 0; i 4; +i) int index = 4 * (i + 4) + path_Codei; noDoor_Codei = this.int_Keyindex; return noDoor_Code; private int Encrypt_intMing(int int_MingHalf, int path_Code, int noDoor_Code) int int_MiHalf = new int4; for (int i = 0; i 4; +i) if (noDoor_Codei = 0) int i

23、ndex = path_Codei; int_MiHalfindex = int_MingHalfi; else int index = path_Codei; if (int_MingHalfi = 0) int_MiHalfindex = 1; else int_MiHalfindex = 0; return int_MiHalf; private int UnEncrypt_intMi(int int_MiHalf, int path_Code, int noDoor_Code) int int_MingHalf = new int4; for (int i = 0; i 4; +i)

24、if (noDoor_Codei = 0) int index = path_Codei; int_MingHalfi = int_MiHalfindex; else int index = path_Codei; if (int_MiHalfindex = 0) int_MingHalfi = 1; else int_MingHalfi = 0; return int_MingHalf; private void ChangeKey(int int_MingHalf_ChangeKey) for (int i = 0; i 28; +i) this.int_KeySticki = this.

25、int_KeyStick(i + 4); for (int i = 0; i = 0; -i) Sum = this.int_Keyi + this.int_KeySticki + Next; if (Sum = 0) Local = 0; Next = 0; else if (Sum = 1) Local = 1; Next = 0; else if (Sum = 2) Local = 0; Next = 1; else Local = 1; Next = 1; this.int_Keyi = Local; int int_KeyEight = new int8; for (int i =

26、0; i 8; +i) int_KeyEighti = this.int_Keyi; for (int i = 0; i 24; +i) this.int_Keyi = this.int_Key(8 + i); for (int i = 0; i 8; +i) this.int_Key(24 + i) = int_KeyEighti; private byte EncryptFile_Do(byte byte_FileMess) int byte_FileMess_length = byte_FileMess.length; int int_FileMess_Mi = new intbyte_

27、FileMess_length * 8; int path_Code = new int4; int noDoor_Code = new int4; path_Code = get_path_Code(); noDoor_Code = get_noDoor_Code(path_Code); byte byte_Ming = byte_FileMess0; int int_Ming = byteToint(byte_Ming); int int_MingUp = new int4; int int_MingDown = new int4; for (int i = 0; i 4; +i) int

28、_MingUpi = int_Mingi; int_MingDowni = int_Ming(4 + i); int int_MingHalf_ChangeKey = new int4; for (int i = 0; i 4; +i) int_MingHalf_ChangeKeyi = int_MingUpi; int_MingUp = Encrypt_intMing(int_MingUp, path_Code, noDoor_Code); for (int i = 0; i 4; +i) int_FileMess_Mii = int_MingUpi; ChangeKey(int_MingH

29、alf_ChangeKey); path_Code = get_path_Code(); noDoor_Code = get_noDoor_Code(path_Code); for (int i = 0; i 4; +i) int_MingHalf_ChangeKeyi = int_MingDowni; int_MingDown = Encrypt_intMing(int_MingDown, path_Code, noDoor_Code); for (int i = 0; i 4; +i) int_FileMess_Mi(i + 4) = int_MingDowni; for (int i =

30、 0; i 4; +i) int_Mingi = int_MingUpi; int_Ming(i + 4) = int_MingDowni; byte_FileMess0 = intTobyte(int_Ming); for (int i = 1; i byte_FileMess.length; +i) byte_Ming = byte_FileMessi; int_Ming = byteToint(byte_Ming); int_MingUp = new int4; int_MingDown = new int4; for (int j = 0; j 4; +j) int_MingUpj =

31、 int_Mingj; int_MingDownj = int_Ming(4 + j); for (int j = 0; j 4; +j) int_MingHalf_ChangeKeyj = int_MingUpj; int_MingUp = Encrypt_intMing(int_MingUp, path_Code, noDoor_Code); for (int j = 0; j 4; +j) int_FileMess_Mi(8 * i + j) = int_MingUpj; ChangeKey(int_MingHalf_ChangeKey); path_Code = get_path_Co

32、de(); noDoor_Code = get_noDoor_Code(path_Code); for (int j = 0; j 4; +j) int_MingHalf_ChangeKeyj = int_MingDownj; int_MingDown = Encrypt_intMing(int_MingDown, path_Code, noDoor_Code); for (int j = 0; j 4; +j) int_FileMess_Mi(8 * i + 4 + j) = int_MingDownj; for (int j = 0; j 4; +j) int_Mingj = int_Mi

33、ngUpj; int_Ming(j + 4) = int_MingDownj; byte_FileMessi = intTobyte(int_Ming); SaveFileBinary(int_FileMess_Mi); return byte_FileMess; private byte UnEncryptFile_Do(byte byte_FileMess) int path_Code = new int4; int noDoor_Code = new int4; path_Code = get_path_Code(); noDoor_Code = get_noDoor_Code(path

34、_Code); byte byte_Mi = byte_FileMess0; int int_Mi = byteToint(byte_Mi); int int_MiUp = new int4; int int_MiDown = new int4; for (int i = 0; i 4; +i) int_MiUpi = int_Mii; int_MiDowni = int_Mi(4 + i); int int_MiHalf_ChangeKey = new int4; int_MiUp = UnEncrypt_intMi(int_MiUp, path_Code, noDoor_Code); fo

35、r (int i = 0; i 4; +i) int_MiHalf_ChangeKeyi = int_MiUpi; ChangeKey(int_MiHalf_ChangeKey); path_Code = get_path_Code(); noDoor_Code = get_noDoor_Code(path_Code); int_MiDown = UnEncrypt_intMi(int_MiDown, path_Code, noDoor_Code); for (int i = 0; i 4; +i) int_MiHalf_ChangeKeyi = int_MiDowni; for (int i

36、 = 0; i 4; +i) int_Mii = int_MiUpi; int_Mi(i + 4) = int_MiDowni; byte_FileMess0 = intTobyte(int_Mi); for (int i = 1; i byte_FileMess.length; +i) byte_Mi = byte_FileMessi; int_Mi = byteToint(byte_Mi); int_MiUp = new int4; int_MiDown = new int4; for (int j = 0; j 4; +j) int_MiUpj = int_Mij; int_MiDown

37、j = int_Mi(4 + j); int_MiUp = UnEncrypt_intMi(int_MiUp, path_Code, noDoor_Code); for (int j = 0; j 4; +j) int_MiHalf_ChangeKeyj = int_MiUpj; ChangeKey(int_MiHalf_ChangeKey); path_Code = get_path_Code(); noDoor_Code = get_noDoor_Code(path_Code); int_MiDown = UnEncrypt_intMi(int_MiDown, path_Code, noD

38、oor_Code); for (int j = 0; j 4; +j) int_MiHalf_ChangeKeyj = int_MiDownj; for (int j = 0; j 0) getAllCode(); SetKey(); int length = fis_sourc.available(); byte byte_FileMess = new bytelength; fis_sourc.read(byte_FileMess); fis_sourc.close(); byte_FileMess = EncryptFile_Do(byte_FileMess); if (!SaveFil

39、e(byte_FileMess, this.str_DestFile) return; JOptionPane.showMessageDialog(this.jfra_Encry, 文件加密完成, 信息提示, 0); this.jtext_Sourc.setText(); this.jtext_Dest.setText(); this.jtext_Key.setText(); else JOptionPane.showMessageDialog(this.jfra_Encry, 源文件为空文件, 信息提示, 0); catch (Exception e) e.printStackTrace()

40、; System.out.println(EncryptFile 错误); private void UnEncryptFile() if (!DoOrNot() return; try File file_sourc = new File(this.str_SourceFile); FileInputStream fis_sourc = new FileInputStream(file_sourc); if (fis_sourc.available() 0) getAllCode(); SetKey(); int length = fis_sourc.available(); byte by

41、te_FileMess = new bytelength; fis_sourc.read(byte_FileMess); fis_sourc.close(); byte_FileMess = UnEncryptFile_Do(byte_FileMess); if (!SaveFile(byte_FileMess, this.str_DestFile) return; JOptionPane.showMessageDialog(this.jfra_Encry, 文件解密完成, 信息提示, 0); this.jtext_Sourc.setText(); this.jtext_Dest.setTex

42、t(); this.jtext_Key.setText(); else JOptionPane.showMessageDialog(this.jfra_Encry, 源文件为空文件, 信息提示, 0); catch (Exception e) e.printStackTrace(); System.out.println(UnEncryptFile 错误); private void SetKey() String str_keytext = new String(this.jtext_Key.getPassword(); byte key_less = str_keytext.getByte

43、s(); byte key_equal = new byte32; int int_Key_mid = new int48; int length = key_less.length; if (length 32) int num_div = 32 / length; int num_left = 32 % length; for (int i = 0; i length * num_div; +i) key_equali = key_less(i % length); for (int i = 0; i num_left; +i) key_equal(length * num_div + i

44、) = key_lessi; else for (int i = 0; i 32; +i) key_equali = key_lessi; for (int i = 0; i 32; +i) switch (key_equali % 2) case 0: this.int_Keyi = 0; break; default: this.int_Keyi = 1; for (int i = 0; i 4; +i) for (int j = 0; j 8; +j) int_Key_midij = this.int_Key(i * 8 + j); for (int i = 0; i 4; +i) this.byte_Keyi = intTobyte(int_Key_midi); for (int i = 0; i 8; +i) int k = i % 2; for (int j = 0; j 4; +j) if (k = 0) if (this.int_Key(i * 4 + j) = 0) this.int_KeyStick(i * 4 + j) = 1; if (this.int_Key(i * 4 + j) != 1) continue; this.

展开阅读全文
温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!