2013-11-14 51 views
0

我剛剛在8月份剛剛開始一個高中級課程,對於java有點新鮮。我仍然在學習基本信息,並對基礎知識有一個總體的瞭解,例如JOptionPane,Scanner,Array和系統行。我的問題是,如果有辦法創建一個獨立的Java程序,只需雙擊桌面上的圖標即可啓動它。如果是這樣,有沒有辦法創建一個文件轉儲,你只能通過密碼訪問它?我已經有一個基本的登錄程序,允許基於預定的用戶和密碼進行訪問。這個程序的目標是創建一個安全的(即使它是基本的)文件共享,它意味着擁有它並阻止那些不包含特定文件(.docx,.jpeg,.pptx等)的人)用於學校工作。如果是這樣,是否還有一種方法可以限制只能通過此程序訪問這些文件的權限?程序終止後,有沒有辦法保存輸入信息?

這是我的代碼至今:

import javax.swing.JOptionPane.*; 
import java.lang.Math.*; 
import java.lang.System.*; 
import java.awt.*; 
import java.awt.event.*; 
import java.util.*; 
import javax.swing.*; 
import javax.swing.JFrame; 

public class UserLog extends JFrame 

{ 

public static void main(String[]Args) throws InterruptedException 
    { 
    boolean isValid=false; 
    while(!isValid) 
     { 
    // Components related to "login" field  
    JLabel label_loginname = new JLabel("Enter your login name:");  
    JTextField loginname = new JTextField(15);  
    // loginname.setText("EnterLoginNameHere"); 
    // Pre-set some text  
    // Components related to "password" field  
    JLabel label_password = new JLabel("Enter your password:");  
    JPasswordField password = new JPasswordField();  
    // password.setEchoChar('@'); 
    // Sets @ as masking character  
    // password.setEchoChar('\000'); 
    // Turns off masking  
    JCheckBox rememberCB = new JCheckBox("Remember me"); 

    Object[] array = {label_loginname, 
    loginname,      
    label_password,      
    password,      
    rememberCB}; 
    Object[] options = {"Login", "Cancel"}; 
    int res = JOptionPane.showOptionDialog(null, 
              array, 
              "Login", 
              JOptionPane.YES_NO_OPTION, 
              JOptionPane.QUESTION_MESSAGE, 
              null,  //do not use a custom Icon 
              options, //the titles of buttons 
              options[0]); //default button title 

    // User hit Login  
    if (res == 0) 
     { 
      System.out.println("Login"); 
     }  
    // User hit CANCEL  
    if (res == 1) 
     { 
      System.out.println("Canceled"); 
     }  
    // User closed the window without hitting any button  
    if (res == JOptionPane.CLOSED_OPTION) 
     { 
      System.out.println("CLOSED_OPTION"); 
     } 


    // Output data in "login" field, if any  
    String newloginname = loginname.getText();  
    String newpassword = new String(password.getPassword());  
    if (newloginname.equalsIgnoreCase("Cody_Coulter") && newpassword.equals("cheche1")) 
     { 
      System.out.println("Login Successful!"); 
      boolean selectedCB = rememberCB.isSelected();  
      System.out.println("selectedCB: " + selectedCB); 
      Thread.sleep(3000); 
      Object[] array1= {"It's about time to choose"}; 
      Object[] options1= {"Leave", "Keep Going"}; 
      int res1 = JOptionPane.showOptionDialog(null, 
              array1, 
              "There", 
              JOptionPane.YES_NO_OPTION, 
              JOptionPane.QUESTION_MESSAGE, 
              null,  //do not use a custom Icon 
              options1, //the titles of buttons 
              options1[0]); //default button title 
      if(res1==1) 
       { 
        String name1 = JOptionPane.showInputDialog(null, 
                 "What is your name?"); 
        int length = 0; 
        length = newpassword.length(); 
        String Pass = "*"; 
        newpassword =newpassword.replaceAll(".","*"); 
        System.out.println("Username: "+newloginname+"\nPassword: "+ 
             newpassword+"\nName: "+name1); 
       } 

     } 
    else { 
      JOptionPane.showMessageDialog(null,"Wrong Username or Password!"); 
      isValid=false; 
     } 
     } 
    // Output data in "password" field, if any  
    // Output state of "remember me" check box  

    } 

} 

這僅僅是該程序的登錄屏幕,但我只是希望能夠:

  • 編輯用戶或密碼通過選擇,例如輸入舊密碼:現在新密碼:重複:並保存新密碼。
  • 創建轉儲文件只能通過包含基本文件,如DOCX,PPTX這個節目訪問等
  • 如何編輯用戶名,密碼,或僅由具有管理員密碼新用戶添加到程序。
  • 如果我唯一的帳戶,以這個程序,其他人想要一個,讀線將是:

    Username: _____ 
    Password: _____ 
    Retype Password:_____ 
    Authentication: _____ 
    

    ,它然後創建一個permament帳戶。

很抱歉的非正統的問題,但我非常好奇,以及新的這些板。我只是想知道是否可以用java,如果可以的話,我可以在哪裏參考材料來學習/教導自己。

+2

是的,你可以做所有這些事情。製作獨立的Java應用程序非常簡單,只需將其導出爲JAR即可。其他的東西有點複雜,你所描述的比你的問題標題更先進。如果你還沒有使用基本的文件IO,我會說現在這是不切實際的。 – Zong

+2

在java中從頭開始重新實現TrueCrypt當然是可行的,但教導如何做到這一點對於SO問題是一個相當大的任務。也許你可以分解你遇到的具體任務中遇到的具體問題,並提出容易給出正確技術答案的問題? – Affe

+0

感謝您的意見。對不起,有這麼多的問題,只是不習慣這些論壇,並與他們的措辭。但是非常感謝你們,下次我肯定會採取這個措施​​。 – Munkeeface

回答

0

是的,這是可能的,但我認爲在一篇文章中有太多的事情需要回答。

你應該看看什麼是Java核心庫中的Scanner類。使用Scanner類,您可以讀取和寫入文件。在這裏搜索一些提示。使用Scanner,您可以使用寫入密碼的文件(保護文件受保護),並且可以通過在文件上重寫密碼(並從同一文件讀取)來更改密碼。

+0

他不只是想讀取/寫入文本文件,而是爲其他文件(包括加密和文件關聯等)製作一個包裝,因此'Scanner'並不是最好的選擇。也許'DataOutputStream'會更合適。另外,*寫一個文件的密碼?* 你瘋了嗎?至少,散列密碼並寫入。 – Zong

+0

當然,這隻能阻止用戶通過程序訪問文件。沒有什麼可以阻止某人真正打開文件本身。 – quazzieclodo

+0

您可以使用某種加密方式將其寫入文件? –

相關問題