2014-01-22 68 views
0

我想用java來製作一個密碼,但我不知道該怎麼去做。創建一個簡單的加密程序

基本上,我希望機器接受文本字符串,說「ABCD」

,然後一把鑰匙,說「4532」

方案應在字母表中向前移動字符如果匹配字母的地方的數字是偶數,並且如果它是奇數的話則落後。

如果沒有數字,關鍵要圍繞循環,直到它出字符串中的字符改變。

然後程序會打印這個鍵。理想情況下,如果我正確僞編碼,解密字符串將是一個逆向過程,只適用於密鑰。我想我會使用數組和if/else語句的組合。

我不確定從哪裏開始。

例&編輯字符串: '你好' 鍵: '12'

A B C d E F G H I J K L M N 2 O p q - [R式T U V W X YŽ

由於對應的密鑰值是1,H將向後移動,許多空間。

h = g

因爲e有一個2,它會向前移動很多空格。

E =克

第一升隨後變爲K,而第二個爲n。密鑰被重複,因爲字符串超出數字進行比較。因爲它與1

你好匹配將成爲ggknn用鑰匙42

+2

......我至少可以得到一些建設性的反饋,而不是downvotes? 這不是作業,我試圖教我自己! –

+0

你能提供一些加密的結果與字符串和組合鍵來理解schnerio。 – Kick

+0

你可能會因爲你沒有努力在代碼中完成自己的努力而陷入低谷。大多數人看到「_我有一個好主意,有人可以爲我做這個嗎?」 – csmckelvey

回答

1

以下是你可以採取這樣做可能採取的步驟O開啓成n。這不是一個確切的工作解決方案,但它有望讓你開始。

  1. 開始由從控制檯讀取輸入(經由ScannerBufferedReader例如)。
  2. 也許在空間上分割你的輸入,以便你有一個String[]的單詞。
  3. 循環遍歷單詞的String[],並再循環哪個單詞。你可以在內部循環的每次迭代中增加一個計數器,並在內部循環結束時重置。您可以使用該計數器變量在內部循環的每次迭代中獲取一個位置(key[counter%lengthOfKey])。如果(counter%lengthOfKey)%2 == 0,你有密鑰的偶數情況,否則奇數情況。在這一點上做任何加密(例如簡單的替代密碼)。
0

有很多加密方法,但是如果您想了解加密技術,您應該從研究XOR加密開始。異或加密使用一個密鑰,並將每個字符的二進制代碼與密鑰異或。如果密鑰長於加密的密碼,它會創建一個無法解密的一次性密鑰。

XOR - 異或 - 與OR不同時,兩個值不能同時爲真。

簡單的解釋:

  1. 假裝要的字符串 「Hello World」 與按鍵 'C' 進行加密。
  2. 對於字符串中的每個字符都與關鍵字「異或」。
  3. 假設h的二進制值是1100011,c的二進制值是0010110(這些組合起來並且不起作用),那麼你可以對每個相應的二進制值進行異或運算。

    1100011 
    XOR 
    0010110 
    ------- 
    1110101 
    

1110101是異或二進制值。

  1. 然後,您將二進制值轉換回字符,並對加密字符串的每一步執行此操作。

問題:

不安全的短鍵。但對於長鍵非常強大並且創建一次性鍵盤。

示例代碼:

http://www.ecestudents.ul.ie/Course_Pages/Btech_ITT/Modules/ET4263/More%20Samples/CEncrypt.java.html

0

找到類下面encyption

public class App 
{ 
    public static void main(String arg[]) 
    { 

     String keys = "12"; 
     String codes = "hello"; 
     StringBuilder result = new StringBuilder(); 

     char[] codeList = codes.toCharArray(); 
     char[] keyList = keys.toCharArray(); 

     int maxCount = keys.length(); 
     System.out.println("The length is "+maxCount); 
     int i = 0; 

     for (Character code : codeList) { 

      int key = Character.getNumericValue(keyList[i]); 

       if(key % 2 == 0) 
        { 
         int res = code+key; 
         result.append((char)res); 
        } 
        else 
        { 
         int res = code-key; 
         result.append((char)res); 
        } 
       i++; 
       if(i==maxCount) 
       { 
        i = 0; 
       } 
      } 
     System.out.println("The result is "+result.toString()); 
     } 
} 
相關問題