SHA-256加密簡單例項(客戶端、服務端)
該博文是參照其他博主內容經過親測的產物,也是因為網上關於這類博文比較多,大多還類似,再此就不註明原創了,如有侵權,望主動聯絡,謝謝!!!
這次選用SHA-256的原因也很簡單,據說之前用的MD5被人爆破了,寧可信其有不可信其無。
言歸正傳,總結三種方式,最終輸出結果一致,下面看服務端程式碼:
package com.zxx.until;
import org.apache.commons.codec.binary.Hex;
import java.io.UnsupportedEncodingException;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
public class ads {
private static final char[] HEX_DIGITS = {'0','1','2','3','4','5','6','7','8','9','a','b','c','d','e','f'};
public static void main(String[] args) {
toSHA001("123456123456");
toSHA002("123456123456");
toSHA003("123456123456");
}
private static void toSHA001(String text) {
MessageDigest digest;
try {
digest = MessageDigest.getInstance("SHA-256");
byte[] hash = digest.digest(text.getBytes("UTF-8"));
String output = Hex.encodeHexString(hash);
System.out.println(output);
} catch (NoSuchAlgorithmException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}catch (UnsupportedEncodingException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
public static String toSHA002(String str){
MessageDigest messageDigest;
String encodeStr = "";
try {
messageDigest = MessageDigest.getInstance("SHA-256");
messageDigest.update(str.getBytes("UTF-8"));
encodeStr = byte2Hex(messageDigest.digest());
System.out.println(encodeStr);
} catch (NoSuchAlgorithmException e) {
e.printStackTrace();
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
return encodeStr;
}
private static String byte2Hex(byte[] bytes){
StringBuffer stringBuffer = new StringBuffer();
String temp = null;
for (int i=0;i<bytes.length;i++){
temp = Integer.toHexString(bytes[i] & 0xFF);
if (temp.length()==1){
//1得到一位的進行補0操作
stringBuffer.append("0");
}
stringBuffer.append(temp);
}
return stringBuffer.toString();
}
private static void toSHA003(String text) {
try {
MessageDigest messageDigest = MessageDigest.getInstance("SHA-256");
messageDigest.update(text.getBytes());
byte[] digest = messageDigest.digest();
int length = digest.length;
StringBuilder buf = new StringBuilder(length*2);
//密文轉換成16進位制
for(int j = 0 ; j < length ; j++){
buf.append(HEX_DIGITS[(digest[j] >> 4) & 0x0f]);
buf.append(HEX_DIGITS[digest[j] & 0x0f]);
}
System.out.println(buf.toString());
} catch (NoSuchAlgorithmException e) {
e.printStackTrace();
}
}
}
用到一個JAR包:
<!-- https://mvnrepository.com/artifact/commons-codec/commons-codec -->
<!-- 如果用的alibaba的資料來源請暫時註釋掉,或者呼叫 HEX 導jar包時看清楚 -->
<!-- import org.apache.commons.codec.binary.Hex; -->
<dependency>
<groupId>commons-codec</groupId>
<artifactId>commons-codec</artifactId>
<version>1.11</version>
</dependency>
在客戶端也有專門的 js 可以做:
我是 JS ,點我呀
程式碼就一句話:
<html>
<head></head>
<body>
<script type="text/javascript" src="sha256_2.js"></script>
<script type="text/javascript">
document.write(sha256_digest("hello world"));
</script>
</body>
</html>
最後多說一句,因為SHA-256和之前的MD5都屬於雜湊演算法加密技術,也就是說是不可逆的,作為開發人員只要記住加密規則然後再去對比密文即可,對於解密這種事情就交給那些大神去做就好了!!!
相關文章
- ElasticSearch客戶端簡單操作例項Elasticsearch客戶端
- Java review--NIO例項:實現服務端和客戶端的簡單通訊JavaView服務端客戶端
- [精華][推薦]CAS SSO單點登入服務端客戶端例項服務端客戶端
- 客戶端,服務端客戶端服務端
- 服務端,客戶端服務端客戶端
- Socket最簡單的客戶端與服務端通訊-Java客戶端服務端Java
- binder通訊例項之c++客戶端與c++服務端C++客戶端服務端
- C++20協程例項:攜程化的IOCP服務端/客戶端C++服務端客戶端
- PHP-Socket服務端客戶端傳送接收通訊例項詳解PHP服務端客戶端
- 模板,從服務端到客戶端服務端客戶端
- 服務端渲染和客戶端渲染服務端客戶端
- 遠端客戶端 訪問 ASM 例項客戶端ASM
- 極簡的Restful框架推薦->Resty(服務端+客戶端)REST框架服務端客戶端
- Mqtt websocket javascript 客戶端例項MQQTWebJavaScript客戶端
- ZooKeeper服務發現客戶端客戶端
- OSSEC服務端配置客戶端批次部署方案服務端客戶端
- python建立tcp服務端和客戶端PythonTCP服務端客戶端
- golang實現tcp客戶端服務端程式GolangTCP客戶端服務端
- CouchBase C 客戶端介面呼叫例項客戶端
- Nacos - 客戶端例項列表獲取客戶端
- 從客戶端連線ASM例項客戶端ASM
- BCB 客戶端 tuxedo 開發例項客戶端UX
- TCP通訊客戶端和服務端簡單程式碼實現TCP客戶端服務端
- 利用tirpc庫實現簡單的客戶端和服務端RPC客戶端服務端
- bbossaop遠端服務介紹-遠端服務呼叫例項
- 淘淘商城系列——訂單系統服務端和客戶端工程搭建服務端客戶端
- WebSocket簡單使用(二)-客戶端Web客戶端
- macOS 自帶的ftp服務端&vnc客戶端MacFTP服務端VNC客戶端
- MQTT伺服器搭建服務端和客戶端MQQT伺服器服務端客戶端
- .Net Remoting服務端與客戶端呼叫示例REM服務端客戶端
- Rest Post示例(java服務端、python客戶端)RESTJava服務端Python客戶端
- Android實現Thrift服務端與客戶端Android服務端客戶端
- rsync備份【基於客戶端與服務端】客戶端服務端
- 使用多種客戶端消費WCF RestFul服務(一)——服務端客戶端REST服務端
- PC客戶端安全測試服務客戶端
- 基於node的tcp客戶端和服務端的簡單通訊TCP客戶端服務端
- TCP/UDP簡易通訊框架原始碼,支援輕鬆管理多個TCP服務端(客戶端)、UDP客戶端TCPUDP框架原始碼服務端客戶端
- BCB 客戶端 tuxedo 開發例項 (轉)客戶端UX