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客戶端
- 服務端,客戶端服務端客戶端
- 客戶端,服務端客戶端服務端
- Socket最簡單的客戶端與服務端通訊-Java客戶端服務端Java
- C++20協程例項:攜程化的IOCP服務端/客戶端C++服務端客戶端
- 服務端渲染和客戶端渲染服務端客戶端
- CouchBase C 客戶端介面呼叫例項客戶端
- Nacos - 客戶端例項列表獲取客戶端
- 利用tirpc庫實現簡單的客戶端和服務端RPC客戶端服務端
- python建立tcp服務端和客戶端PythonTCP服務端客戶端
- TCP通訊客戶端和服務端簡單程式碼實現TCP客戶端服務端
- OSSEC服務端配置客戶端批次部署方案服務端客戶端
- golang實現tcp客戶端服務端程式GolangTCP客戶端服務端
- 基於node的tcp客戶端和服務端的簡單通訊TCP客戶端服務端
- macOS 自帶的ftp服務端&vnc客戶端MacFTP服務端VNC客戶端
- rsync備份【基於客戶端與服務端】客戶端服務端
- 埃森哲:端到端客戶服務報告
- MQTT伺服器搭建服務端和客戶端MQQT伺服器服務端客戶端
- 使用Apollo Server搭建GraphQL的服務端和客戶端Server服務端客戶端
- 服務端如何獲取客戶端請求IP地址服務端客戶端
- 實現客戶端與服務端的HTTP通訊客戶端服務端HTTP
- MQTT協議從服務端到客戶端詳解MQQT協議服務端客戶端
- Eureka高可用叢集服務端和客戶端配置服務端客戶端
- 微服務架構,客戶端如何catch服務端的異常?微服務架構客戶端服務端
- 實現服務端和客戶端的實時雙向資料傳輸-WebSocket簡單瞭解服務端客戶端Web
- Java服務端和客戶端開發輔助工具UtilsJava服務端客戶端
- 從客戶端向服務端發起請求(3種)客戶端服務端
- Go gRPC 系列二:一元客戶端與服務端GoRPC客戶端服務端
- Thrift 客戶端-服務端 零XML配置 註解式配置客戶端服務端XML
- Go基於gRPC實現客戶端連入服務端GoRPC客戶端服務端
- 「iOS」行車服務app 「客戶端、後端思路+程式碼」iOSAPP客戶端後端
- Qt實現網路聊天室(客戶端,服務端)QT客戶端服務端
- 簡單的C++檔案伺服器--Linux C++客戶端從服務端獲取檔案C++伺服器Linux客戶端服務端
- 如何開啟客戶端加密特性客戶端加密
- Retrofit2與服務端例項講解服務端
- Nacos - 服務端處理例項列表請求服務端
- SpringBoot系列之服務端解析客戶端國際化請求Spring Boot服務端客戶端
- TCP程式設計之服務端和客戶端的開發TCP程式設計服務端客戶端