SHA-2,名稱來自於安全雜湊演算法2(英語:Secure Hash Algorithm 2)的縮寫,一種密碼雜湊函數演算法標準,由美國國家安全局研發,由美國國家標準與技術研究院(NIST)在2001年發布。屬於SHA演算法之一,是SHA-1的後繼者。其下又可再分為六個不同的演算法標準,包括了:SHA-224、SHA-256、SHA-384、SHA-512、SHA-512/224、SHA-512/256。
雜湊演算法,是一種從任何一種資料中創建小的數字「指紋」的方法。 雜湊函數把訊息或資料壓縮成摘要,使得資料量變小,將資料的格式固定下來。 此函數將資料打亂混合,重新建立一個稱為雜湊值(或雜湊值)的指紋。 雜湊值通常用一個短的隨機字母和數字組成的字串來代表。
對於任意長度的訊息,SHA256都會產生一個256bit長的雜湊值,稱作訊息摘要。 這個摘要相當於是個長度為32個位元組的數組,通常用一個長度為64的十六進位字串來表示。
如對字元123456
進行sha-256演算結果為:8d969eef6ecad3c29a3a629280e686cf0c3f5d5a86aff3ca12020c923adc6c92
const text ="123456";
async function digestMessage(message) {
const msgUint8 = new TextEncoder().encode(message); // encode as (utf-8) Uint8Array
const hashBuffer = await crypto.subtle.digest("SHA-256", msgUint8); // hash the message
const hashArray = Array.from(new Uint8Array(hashBuffer)); // convert buffer to byte array
const hashHex = hashArray
.map((b) => b.toString(16).padStart(2, "0"))
.join(""); // convert bytes to hex string
return hashHex;
}
digestMessage(text).then((digestHex) => console.log(digestHex));
演算結果為
8d969eef6ecad3c29a3a629280e686cf0c3f5d5a86aff3ca12020c923adc6c92
from hashlib import sha256
data = '123456'
print(sha256(data.encode('utf-8')).hexdigest())
演算結果為
8d969eef6ecad3c29a3a629280e686cf0c3f5d5a86aff3ca12020c923adc6c92
import java.math.BigInteger;
import java.nio.charset.StandardCharsets;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
String text = "123456";
MessageDigest messageDigest = null;
try {
messageDigest = MessageDigest.getInstance("SHA-256");
} catch (NoSuchAlgorithmException e) {
e.printStackTrace();
}
byte[] hash = messageDigest.digest(text.getBytes(StandardCharsets.UTF_8));
System.out.println(String.format("%064x", new BigInteger(1, hash)));
演算結果為
8d969eef6ecad3c29a3a629280e686cf0c3f5d5a86aff3ca12020c923adc6c92
package main
import (
"crypto/sha256"
"encoding/hex"
"fmt"
)
func main() {
s := "123456"
h := sha256.New()
h.Write([]byte(s))
sha1_hash := hex.EncodeToString(h.Sum(nil))
fmt.Println(s, sha1_hash)
}
演算結果為
8d969eef6ecad3c29a3a629280e686cf0c3f5d5a86aff3ca12020c923adc6c92
use sha256::{digest, try_digest};
//sha256 digest String
let input = String::from("123456");
let val = digest(input);
println!("{}", val);
演算結果為
8d969eef6ecad3c29a3a629280e686cf0c3f5d5a86aff3ca12020c923adc6c92
echo -n 123456 |sha256sum
Windows certutil只支援檔案,建立data.txt內容為123456
certutil -hashfile data.txt SHA256
演算結果為
8d969eef6ecad3c29a3a629280e686cf0c3f5d5a86aff3ca12020c923adc6c92
sha-256字元演算工具
https://www.strerr.com/tw/sha256.html
sha-256檔案演算工具
https://www.strerr.com/tw/sha256_file.html