C語言中文網 目錄

Java字符串的加密解密

為了保證程序的安全,經常采用數據加密的方法。Java 中提供了專門用于加密運算的類和接口。

除了使用加密類和接口外,還可以通過多種方式實現字符串的加密。其中常用的就是獲取字符串的字節數組,之后對字節數組中的每個字節都進行運算,得到新的內容,這時所獲得的字符串與原字符串將不相同,以此達到加密的效果;解密時再將加密字符串進行相反的運算,這樣即可得到原字符串。

本實例簡單介紹如何通過數據運算實現字符串的加密和解密,實現步驟如下。

(1) 創建一個靜態的 encryptAndDencrypt() 方法,在該方法中傳入兩個參數。代碼如下:
public static String encryptAndDencrypt(String value, char secret)
{
    byte[] bt=value.getBytes();    //將需要加密的內容轉換為字節數組
    for(int i=0;i<bt.length;i++)
    {
        bt[i]=(byte)(bt[i]^(int)secret);    //通過異或運算進行加密
    }
    String newresult=new String(bt,0,bt.length);    //將加密后的字符串保存到 newresult 變量中
    return newresult;
}

上述代碼首先將需要加密的內容轉換為字節數組,接著遍歷字節數組中的內容,在 for 語句中通過異或運算進行加密,然后將加密后的字符串保存到 newresult 變量中。最后返回 newresult 變量的值。

(2) 在 main() 方法中添加代碼,接收用戶在控制臺輸入的內容并輸出,然后調用 encryptAndUncrypt() 方法對字符串分別進行加密和解密,并將加密和解密后的內容輸出。代碼如下:
public static void main(String[] args)
{
    Scanner scan=new Scanner(System.in);
    char secret='8';    //加密文字符
    System.out.println("請輸入您想加密的內容:");
    String pass=scan.next();
    System.out.println("原字符串內容:"+pass);
    String encryptResult=encryptAndDencrypt(pass,secret);
    System.out.println("加密后的內容:"+encryptResult);
    String uncryptResult=encryptAndDencrypt(encryptResult,secret);
    System.out.println("解密后的內容:"+uncryptResult);
}

(3) 執行上述代碼進行測試,如下所示。
請輸入您想加密的內容:
hello,java
原字符串內容:hello,java
加密后的內容:P]TTWRYNY
解密后的內容:hello,java

精美而實用的網站,提供C語言C++STLLinuxShellJavaGo語言等教程,以及socketGCCviSwing設計模式JSP等專題。

Copyright ?2011-2018 biancheng.net, 陜ICP備15000209號

底部Logo