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);
}
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);
}
Base64 的加密演算法是可逆的
3.SHA1雜湊演算法(40位)
@Test
public void SHA1Method(){
String s = DigestUtils.sha1Hex("123456");
System.out.println("---------------SHA1-----------");
System.out.println(s);
}
4.SHA256雜湊演算法
@Test
public void SHA256Method(){
String s = DigestUtils.sha256Hex("123456");
System.out.println("--------------SHA256------------");
System.out.println(s);
}
使用場景
使用者註冊登入.
通常情況下資料庫中的使用者表種密碼欄位中的值是比較敏感的資料,即使是一個公司的DBA或者資料資料倉儲的管理員也是不會直接看到銘文顯示的使用者密碼。所以我們通常在使用者註冊的時候就是把密碼加密儲存到資料庫。那麼問題這個時候就來了,加密之後存庫的密碼並不是使用者註冊的時候的輸入的密碼,那麼我們如何在使用者等登入的時候對使用者的使用者名稱和密碼進行校驗呢?
如果是Base64這樣的加密演算法,我們就可以通過解密的方式,但是使用的是MD5之類的雜湊演算法這些不可逆的加密之後,我們就是在使用者登入的時候對使用者資料的密碼進行再次加密然後到資料庫中匹配,同樣的資料每次加密之後的資料肯定是相同的。
相關文章
- HTTPS-各種加密方式HTTP加密
- .NET的兩種部署模式,瞭解一下模式
- 詳解Apache Hudi如何配置各種型別分割槽Apache型別
- React效能優化的8種方式瞭解一下?React優化
- C#各種加密方法,字典排序C#加密排序
- 瞭解checksec顯示的各種引數和保護
- 瞭解一下Bootstrapboot
- CSS 瞭解一下CSS
- koa,瞭解一下?
- JSX,瞭解一下?JS
- Java加密解密瞭解Java加密解密
- 「Adobe國際認證」瞭解Adobe Photoshop,如何處理各種
- Apache Commons Collections反序列化漏洞Apache
- 使用Apache commons email傳送郵件ApacheAI
- Swift GCD 瞭解一下SwiftGC
- table 元件瞭解一下?元件
- this.$toast() 瞭解一下?AST
- Android Camera瞭解一下Android
- async/await,瞭解一下?AI
- [Java SE] 基礎工具庫 : Apache Commons IOJavaApache
- Immutable.js瞭解一下?JS
- RecyclerView.smoothScrollToPosition瞭解一下View
- redux-saga 瞭解一下Redux
- async函式,瞭解一下函式
- 木桶佈局,瞭解一下
- iOS挖礦瞭解一下?iOS
- React-HOC瞭解一下React
- 簡單瞭解一下GaussDB
- CSS註釋瞭解一下CSS
- NativeScript-Vue,瞭解一下?Vue
- HTTP快取瞭解一下HTTP快取
- require.js瞭解一下UIJS
- 應用層,瞭解一下
- react-router瞭解一下React
- 策略模式不瞭解一下?模式
- 何為Linux,瞭解一下?Linux
- 趣圖:21 副 GIF 動圖讓你瞭解各種數學概念
- 使用Apache POI 處理Miscrosoft Office各種格式檔案ApacheROS