2,javase程式碼實戰-運算子——位運算實現加密解密 (一)

程式設計侯發表於2018-02-24

問題介紹:
想要對一段字串進行加密,我們可以簡單使用異或運算子實現一個簡單的加密。
問題分析:
異或運算子^,相同二進位制為0,不同二進位制為1。
假設有一個字元”w”,我們使其與一個數100做異或運算,那麼就會改變字元“w”,變化後的字元假設記為“a”,這個過程稱為加密。
我們將“a”在與100做異或運算,那麼就會得到原來的字元“w”,這個過程稱為解密。
原理:a =w^100【加密】; a^100 =w^100^100【解密】 .因為100^100 為 0 ,a^100是w。

/**
 * 1,宣告一個字串變數,用於儲存加密字串。
 * 2,根據使用者輸出的密碼,並儲存原始的字串,並獲取對應的字元陣列
 * 3,使用迴圈進行每個字元與100做異或運算,並儲存到原來的字元陣列中。加密
 * 4,使用迴圈進行每個字元與100做異或運算,並儲存到原來的字元陣列中。解密
 *
 */
         String spsd =null;//加密字串
        //輸入密碼
        System.out.println("請輸入你的密碼");
        Scanner s =new Scanner(System.in);
        String psd =s.nextLine();
        char []p =psd.toCharArray();
        //加密
        for(int i=0;i<p.length;i++){
            p[i] =(char) (p[i]^100);
        }
        spsd =String.valueOf(p);
        System.out.println("密碼字元:"+psd);
        System.out.println("加密後的密碼字元"+spsd);
        //解密
        for(int i=0;i<p.length;i++){
            p[i] =(char) (p[i]^100);
        }
        spsd =String.valueOf(p);
        System.out.println("解密後的密碼字元"+spsd);

效果圖:
這裡寫圖片描述

相關文章