Apache Commons Codec:各種加密瞭解一下

weixin_34107955發表於2018-11-15
13226573-cb36bae84ab3ea86.png
Apache Commons Codec

簡介

Apache Commons Codec:

Apache Commons Codec (TM) software provides implementations of common encoders and decoders such as Base64, Hex, Phonetic and URLs.
Apache Commons Codec(TM)軟體提供常見編碼器和解碼器的實現,如Base64,Hex,Phonetic和URL。
以上是Apache官網提供的對Commons Codec 的簡單描述,我們獲得的很明確的一條資訊是:提供了一些加密的API,是加密的一種解決方案.

準備工作

maven 座標(mirrors)

 <!-- https://mvnrepository.com/artifact/commons-codec/commons-codec -->
        <dependency>
            <groupId>commons-codec</groupId>
            <artifactId>commons-codec</artifactId>
            <version>1.11</version>
        </dependency>

快速上手

1.MD5雜湊演算法

詞彙解釋:
MD5訊息摘要演算法(英語:MD5 Message-Digest Algorithm),一種被廣泛使用的密碼雜湊函式,可以產生出一個128位(16位元組)的雜湊值(hash value),用於確保資訊傳輸完整一致。MD5由美國密碼學家羅納德·李維斯特(Ronald Linn Rivest)設計,於1992年公開,用以取代MD4演算法。

DigestUtils.md5Hex(String str)

@Test
    public void MD5Method(){
        String md5Hex = DigestUtils.md5Hex("123456");
        System.out.println(md5Hex);
    }
13226573-63ffec078a137eba.png
加密之後的字串

2.Base64

是網路上最常見的用於傳輸8Bit位元組碼的編碼方式之一,Base64就是一種基於64個可列印字元來表示二進位制資料的方法。可檢視RFC2045~RFC2049,上面有MIME的詳細規範

 @Test
    public void Base64Method(){
        Base64 base64 = new Base64();
        String str = base64.encodeToString("123456".getBytes());
        System.out.println(str);
        System.out.println("-----------解密----------");
        String s = new String(base64.decode(str));
        System.out.println(s);
    }
13226573-118c851345b5f2f1.png
Base64加密解密

Base64 的加密演算法是可逆的

3.SHA1雜湊演算法(40位)

@Test
    public void SHA1Method(){
        String s = DigestUtils.sha1Hex("123456");
        System.out.println("---------------SHA1-----------");
        System.out.println(s);
    }
13226573-2012ecf11d3da7c6.png
SHA1雜湊演算法

4.SHA256雜湊演算法

 @Test
    public void SHA256Method(){
        String s = DigestUtils.sha256Hex("123456");
        System.out.println("--------------SHA256------------");
        System.out.println(s);
    }
13226573-c99a86daa0a6381f.png
SHA256雜湊演算法

使用場景

使用者註冊登入.
通常情況下資料庫中的使用者表種密碼欄位中的值是比較敏感的資料,即使是一個公司的DBA或者資料資料倉儲的管理員也是不會直接看到銘文顯示的使用者密碼。所以我們通常在使用者註冊的時候就是把密碼加密儲存到資料庫。那麼問題這個時候就來了,加密之後存庫的密碼並不是使用者註冊的時候的輸入的密碼,那麼我們如何在使用者等登入的時候對使用者的使用者名稱和密碼進行校驗呢?
如果是Base64這樣的加密演算法,我們就可以通過解密的方式,但是使用的是MD5之類的雜湊演算法這些不可逆的加密之後,我們就是在使用者登入的時候對使用者資料的密碼進行再次加密然後到資料庫中匹配,同樣的資料每次加密之後的資料肯定是相同的。

相關文章