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 %}