1. 程式人生 > >加密可以這樣簡單(位運算)

加密可以這樣簡單(位運算)

     通過位運算的^”異或運算子把字串與一個指定的值進行異或運算,從而改變字串每個字元的值,這樣就可以得到一個加密後的字串。當把加密後的字串作為程式輸入內容,異或運算會把加密後的字串還原為原有字串的值,如圖

    

    建立Example類,在該類的主方法中建立System類的標準輸入流的掃描器物件,提示使用者輸入一個英文的字串或者要解密的字串,然後通過掃描器獲取使用者輸入的字串,經過加密或解密後,把字串通過錯誤流輸出到控制檯。程式碼如下:

import java.util.Scanner; public class Example { public static void main(String[] args) {         Scanner scan = new Scanner(System.in);         System.out.println("請輸入一個英文字串或解密字串");         String password = scan.nextLine();// 獲取使用者輸入         char[] array = password.toCharArray();// 獲取字元陣列         for (int i = 0; i < array.length; i++) {// 遍歷字元陣列             array[i] = (char) (array[i] ^ 20000);// 對每個陣列元素進行異或運算         }         System.out.println("加密或解密結果如下:");         System.err.println(new String(array));// 輸出金鑰     } }


說明:程式最後使用標準錯誤輸出流不是用於輸出錯誤資訊,而是利用了其在Eclipse控制檯以紅色顯示的特性來突出顯示。

    靈活運用位運算可以實現很多高階、高效的演算法。例如,一個數字的位移運算,每左移n位就等於這個數乘以2n次方,每右移n位就等於這個數除以2n次方,而且這個演算法非常快。