【Windows】【macOS】取得檔案雜湊值hashcode(md5、sha)加密技術入門

家門派系


1. 「對稱式加密(Symmetric Encryption)」:

使用同一把鑰匙進行加密、解密 ex: AES家族、DES家族

2. 「雜湊(Hash Function)」 :極難逆轉的數學摘要運算,用來取得檔案指紋、驗證完整性

ex: MD家族、SHA家族

不是「非對稱加密」,雜湊與加密的體系不同


3. 「非對稱加密(Asymmetric Encryption)」:使用不同鑰匙,運用公鑰加密、私鑰解密

常用在 HTTPS(SSL/TLS)、數位簽章、GPG簽章

ex: RSA家族、ECDSA(橢圓)家族、NTRU(抗量子)



只有雜湊(Hash) 演算法的輸出是「固定長度」

對稱加密/非對稱加密 則是依輸入長度而變動,不是固定長度






雜湊派系


md5(誕生於1992年) 與 sha1(誕生於1995年) 是早期一種古老的雜湊演算法,取檔案的數位指紋

近年來因為碰撞漏洞問題,容易被破解、不再安全

若有安全性考量,建議改為sha256(誕生於2001年)、sha3(誕生於2015年 但尚未普及)


SHA(Secure Hash Algorithm)家族

名稱

所屬家族

位元長度

發表年份

架構類型

安全性現況

備註與應用情境

SHA-0

SHA-1 前身

160 位元

1993

Merkle–Damgård

❌ 已淘汰

很快被撤回,設計有嚴重錯誤

SHA-1

SHA-1

160 位元

1995

Merkle–Damgård

❌ 已破解

2017 年 SHAttered 碰撞攻擊成功

SHA-224

SHA-2

224 位元

2001

Merkle–Damgård

✅ 安全

為嵌入式系統優化的版本

SHA-256

SHA-2

256 位元

2001

Merkle–Damgård

✅ 安全

主流應用:TLS、區塊鏈、JWT、憑證等

SHA-384

SHA-2

384 位元

2001

Merkle–Damgård

✅ 安全

高安全性版本,常用於憑證與簽章

SHA-512

SHA-2

512 位元

2001

Merkle–Damgård

✅ 安全

用於高安全性場景,如軍用或政府用途

SHA3-224

SHA-3

224 位元

2015

Sponge Function (Keccak)

✅ 更安全

完全不同架構,可防長度延伸攻擊

SHA3-256

SHA-3

256 位元

2015

Sponge Function (Keccak)

✅ 更安全

設計為 SHA-256 替代品,尚未普及

SHA3-384

SHA-3

384 位元

2015

Sponge Function (Keccak)

✅ 更安全

研究、密碼學用途為主

SHA3-512

SHA-3

512 位元

2015

Sponge Function (Keccak)

✅ 更安全

尚未主流,安全性最高的 hash 標準之一

SHAKE128

SHA-3 Ext

可變長

2015

Sponge + XOF

✅ 靈活安全

延伸輸出格式(XOF),密碼學應用研究

SHAKE256

SHA-3 Ext

可變長

2015

Sponge + XOF

✅ 靈活安全

適合產生大量隨機數據,防範新型攻擊


MD(Message Digest)家族

MD 系列的密碼架構已過時

因為此套算法具有弱點,可預測、可控制雜湊結果,如何拉長長度都能預測、產生碰撞


名稱代號

發表年份

輸出長度

安全性現況

備註說明

MD1

1989?

未公開

❌ 無實作

幾乎無資料,僅被提及為概念前身

MD2

1989

128 bits

❌ 過時

專為 8-bit 設計,慢且已遭破解

MD3

❌ 被跳過

設計被認為不穩定,從未公開實作

MD4

1990

128 bits

❌ 不安全

計算速度快,但安全性太差,很快被攻破

MD5

1992

128 bits

❌ 已淘汰

最知名版本,曾用於 SSL、檔案驗證

MD6

2008

可變長

⚠️ 尚未廣泛應用

參加 SHA-3 競賽但未勝出,理論強但實作不佳

MD 家族在安全性用途上已經死透了,只能在無風險的情境下使用



Windows

certutil 是 Windows 內建的命令列工具,常用於憑證與安全相關操作

> certutil -hashfile <filename> md5 

> certutil -hashfile <filename> sha256

可支援MD5、SHA1(160-bit)、SHA256、SHA384、SHA512 參數等等

沒帶入參數時,預設使用SHA1

目前尚不支援 SHA3


macOS

macOS指令,相對簡單很多

$ md5 <filename>

shasum -a 256 <filename>

1是SHA1、256是SHA256、512是SHA512


跨平台跨系統

(Windows要先安裝openssl

$ openssl dgst -md5

$ openssl dgst -sha256

可支援 MD5、SHA256、SHA512 等

沒帶入參數時,預設使用md5



沒有留言:

張貼留言