Python / hashlib === ###### tags: `Python` ###### tags: `Python`, `PyPi`, `hashlib`, `zlib`, `md5`, `sha1`, `sha256`, `CRC32`, `encode`, `hexdigest` <br> [TOC] <br> ## 快速上手 ```python= import hashlib encoding = 'ascii' # utf-8 md5 = hashlib.md5() md5.update('123'.encode(encoding)) md5.update('456'.encode(encoding)) md5.update('789'.encode(encoding)) print(md5.hexdigest()) md5 = hashlib.md5() md5.update('123456789'.encode(encoding)) print(md5.hexdigest()) ``` 執行結果: ``` 25f9e794323b453885f5181f1b624d0b 25f9e794323b453885f5181f1b624d0b ``` <br> ## 更多範例 ```python= import hashlib, zlib s = "meta-llama-llama-3.1-8B-instruct" # MD5 md5_val = hashlib.md5(s.encode("utf-8")).hexdigest() # SHA1 sha1_val = hashlib.sha1(s.encode("utf-8")).hexdigest() # SHA256 sha256_val = hashlib.sha256(s.encode("utf-8")).hexdigest() # CRC32(注意:這裡用 zlib.crc32 計算,並格式化為 8 位十六進位) crc32_val = format(zlib.crc32(s.encode("utf-8")) & 0xffffffff, '08x') print("MD5:", md5_val) print("SHA1:", sha1_val) print("SHA256:", sha256_val) print("CRC32:", crc32_val) ``` - ### 執行結果 ``` MD5: 7cf3ff7c32903e2bed7c46eacd28c85f SHA1: 8293fa208cdd4b2a1b19863e2c559c5035366cb5 SHA256: c62a5d666f63e7f72e2ded5e4b867e789ba4260031e780a2d7f817342df8a0e4 CRC32: eabd1fbf ``` <br> ## 討論 - ### 根據時間戳記 yyyymmdd-HHMMSS,將時間戳記轉為長度為6的雜湊值<br>限制:使用 Python 語言 ChatGPT: 您可以使用Python中的哈希函數和字串處理函數來實現將時間戳記轉換為長度為6的雜湊值。以下是一個示例程式碼: ```python= import hashlib from datetime import datetime def convert_timestamp(timestamp): # 將時間戳記格式化為指定的格式 formatted_timestamp = timestamp.strftime("%Y%m%d-%H%M%S") # 使用MD5哈希函數計算雜湊值 hash_object = hashlib.md5(formatted_timestamp.encode()) hash_value = hash_object.hexdigest() # 取雜湊值的前6個字符作為結果 result = hash_value[:6] return result # 獲取當前的時間戳記 current_timestamp = datetime.now() # 將時間戳記轉換為雜湊值 hashed_value = convert_timestamp(current_timestamp) print(hashed_value) ``` 這個程式碼使用了Python的`hashlib`庫來計算MD5雜湊值,並使用`datetime`模塊來獲取當前的時間戳記。輸出結果將是一個長度為6的雜湊值。您可以根據需要將時間戳記作為輸入傳遞給`convert_timestamp`函數。 <br> ## 參考資料 - [How to get MD5 sum of a string using python?](https://stackoverflow.com/questions/5297448/) - [Get the MD5 hash of big files in Python](https://stackoverflow.com/questions/1131220) <br> {%hackmd vaaMgNRPS4KGJDSFG0ZE0w %}