文件加密(Java)課程設計

要求在file.1.txt 中存放原始文件,file.2.txt 中存放加密文件 file.3.txt存放解密文件

所有代碼:

​package 課程設計;

import javax.swing.*;
import java.util.*;
import java.io.*;
import java.awt.*;
import java.awt.event.*;
class EncFile
{   
	private static final int numOfEncAndDec = 0x999; //加密解密祕鑰
	private static int dataOfFile = 0; // 文件字節內容
	public EncFile(File srcFile, File encFile) throws Exception {
	    if(!srcFile.exists()){
	        System.out.println("初始文件不存在");
	        System.out.println("創建文件!");
			System.out.println("創建成功!");
	        srcFile.createNewFile();
	    }
	    FileOutputStream src_fos = new FileOutputStream(srcFile);
	    OutputStreamWriter src_writer = new OutputStreamWriter(src_fos,"utf-8");
	    Scanner sc=new Scanner(System.in);
	    System.out.println("請輸入想要加密的文件內容:");
	    String s=sc.nextLine();
	    src_writer.write(s);
	    src_writer.close();
	    src_fos.close();	    
	    if(!encFile.exists()){
	        System.out.println("加密文件不存在");
	        System.out.println("創建文件!");
			System.out.println("創建成功!");
	        encFile.createNewFile();
	    }
	    InputStream fis  = new FileInputStream(srcFile);
	    OutputStream fos = new FileOutputStream(encFile);
	    while ((dataOfFile = fis.read()) > -1) {
	        fos.write(dataOfFile^numOfEncAndDec);
	    }
	    System.out.println("加密成功...");
	    fis.close();
	    fos.flush();
	    fos.close();
	}
}
class DecFile
{
	private static final int numOfEncAndDec = 0x999; //加密解密祕鑰
	private static int dataOfFile = 0; // 文件字節內容
	public DecFile(File encFile, File decFile) throws Exception {
		if(!encFile.exists()){
			System.out.println("加密文件不存在");
			System.out.println("創建文件!");
			System.out.println("創建成功!");
			return;
		}
		if(!decFile.exists()){
			System.out.println("已創建解密文件");
			decFile.createNewFile();
		}		
		InputStream fis  = new FileInputStream(encFile);
		OutputStream fos = new FileOutputStream(decFile);
		while ((dataOfFile = fis.read()) > -1) {
			fos.write(dataOfFile^numOfEncAndDec);
		}
		//創建一個帶緩衝區的輸入流
	    FileInputStream bis = new FileInputStream(decFile);
	    InputStreamReader reader = new InputStreamReader(bis,"utf-8");    
	    BufferedReader bufferedReader = new BufferedReader(reader);
	    String line;
	    System.out.print("解密文件內容:");
	    while((line=bufferedReader.readLine())!=null){
	        System.out.println(line);
	    }
	    bufferedReader.close();
		System.out.println("解密成功...");
		fis.close();
		fos.flush();
		fos.close();
	}
}
class chakan
{   
  public chakan(File a)throws Exception
  {
	  FileInputStream bis = new FileInputStream(a);
	    InputStreamReader reader = new InputStreamReader(bis,"utf-8");    
	    BufferedReader bufferedReader = new BufferedReader(reader);
	    String line;
	    
	    while((line=bufferedReader.readLine())!=null){
	        System.out.println(line);
	    }
	    bufferedReader.close();
  }
}
class shuchu
{     
	public static void speak(int n)
	{
		File srcFile = new File("D:/File.1.txt"); //初始文件
	    File encFile = new File("D:/File.2.txt"); //加密文件
	    File decFile = new File("D:/File.3.txt"); //解密文件
	    File miFile  = new File("D:/密碼.txt");
   	 try {  
            	 if(n==1)
                 {
                 	EncFile En=new EncFile(srcFile,encFile);
                 }
            	 else   if(n==2)
                 {
                 	 DecFile De=new DecFile(encFile, decFile);
                 }
            	 else   if(n==3)
                 {  
            		 System.out.println("原始文件內容爲:");
                 	chakan ck=new chakan(srcFile);
                 }
            	 else   if(n==4)
                 {  
            		 System.out.println("加密文件內容爲:");
                 	chakan cp=new chakan(encFile);
                 }
            	 else   if(n==5)
                 {  
            		 System.out.println("解密文件內容爲:");
                 	chakan ch=new chakan(decFile);
                 }
            	 else if(n==6)
            	 {
            		 gaimi gm=new gaimi(miFile);
            	 }
            	 else
            	System.out.println("      請輸入正確選項");                       
        } catch (Exception e) {
            e.printStackTrace();
        }
	}
}
class gaimi
{   
	public gaimi(File miFile )throws Exception
	{
	FileWriter in=new FileWriter(miFile);
	Scanner sc=new Scanner(System.in);
	System.out.println("請輸入修改後的密碼:");
	int n=sc.nextInt()+48;
	in.write(n);
	System.out.println("修改成功!");
	in.close();
	}
}
public class 文件加密 {
	private static final int numOfEncAndDec = 0x999; //加密解密祕鑰
	private static int dataOfFile = 0; // 文件字節內容
	private static void createAndShowGUI()
	{
		JFrame f=new JFrame("文件加密系統");
		f.setLayout(new FlowLayout(FlowLayout.LEFT,20,30));
		f.setSize(400,400);
		f.setLocation(400,300);
		
		JButton but1=new JButton("1:加密文件");
		JButton but2=new JButton("2:解密文件");
		JButton but3=new JButton("3:顯示原始文件內容");
		JButton but4=new JButton("4:顯示加密文件內容");
		JButton but5=new JButton("5:顯示解密文件內容");
		JButton but6=new JButton("6:修改密碼");
		JButton but7=new JButton("7:退出軟件");
		 but1.addActionListener(new ActionListener()
  		{   
   
  			public void actionPerformed(ActionEvent e) {
         	shuchu sc= new shuchu();
  			sc.speak(1);
              }
  		}
  		);
  		but2.addActionListener(new ActionListener()
  		{
  			public void actionPerformed(ActionEvent e) {
	
  	  			shuchu sc= new shuchu();
  	  			sc.speak(2);
              }
  		}
  		);
  		but3.addActionListener(new ActionListener()
  		{
  			public void actionPerformed(ActionEvent e) {
  			
  	  			shuchu sc= new shuchu();
  	  			sc.speak(3);
              }
  		}
  		);
  		but4.addActionListener(new ActionListener()
  		{
  			public void actionPerformed(ActionEvent e) {
  					
  	  			shuchu sc= new shuchu();
  	  			sc.speak(4);
              }
  		}
  		);
  		but5.addActionListener(new ActionListener()
  		{
  			public void actionPerformed(ActionEvent e) {
  	
  	  			shuchu sc= new shuchu();
  	  			sc.speak(5);
              }
  		}
  		);
  		but6.addActionListener(new ActionListener()
  		{
  			public void actionPerformed(ActionEvent e) {
  				shuchu sc= new shuchu();
  	  			sc.speak(6);
              }
  		}
  		);
  		but7.addActionListener(new ActionListener()
  		{
  			public void actionPerformed(ActionEvent e) {
  				System.exit(0);
              }
  		}
  		);
		f.add(but1);
		f.add(but2);
		f.add(but3);
		f.add(but4);
		f.add(but5);
		f.add(but6);
		f.add(but7);
		f.setVisible(true);
		f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
	}	
    public static void main(String[] args) throws Exception{
    	
    	FileReader out=new FileReader("D:/密碼.txt");
    	System.out.println("請輸入一位系統密碼:");
    	int str=0;	
    	str=out.read();
     	out.close();
    	int key=str-48;
    	 Scanner sc=new Scanner(System.in);
    	 int k=0;
    	 for(int i=0;i<3;i++)
    	 {   
    		 if(k==1)break;
    		 if(k==2)break;
    		int g=sc.nextInt();
    		 if(g==key)
    		 {   
    			 System.out.println("密碼正確,歡迎使用");
    			 javax.swing.SwingUtilities.invokeLater(new Runnable() {
    			        public void run()
    			        {
    			           createAndShowGUI();
    			        }
    			 });
    			 k=1;
    			 break;
    		 }
    		 if(g!=key&&i!=2)
    		 {
    			 System.out.println("密碼錯誤!重新輸入!");
    		 }
    		 if(g!=key&&i==2)
    		 {
    			 System.out.println("三次錯誤,無法使用!");
    			 k=2;
    		 }
    	 }
         
    }
}
​

缺陷:要先創建一個密碼文件存放一位密碼,路徑可以修改, 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章