iT邦幫忙

2023 iThome 鐵人賽

DAY 21
0
Security

從零開始學資訊安全系列 第 21

從零開始學資訊安全-DAY21:碰撞練習 純數字

  • 分享至 

  • xImage
  •  

今天來嘗試用python的方法來自己算4位數字密碼

import hashlib
import random

def generate_random_password():
    # 生成隨機數作為密碼
    return str(random.randint(0, 9999))

def hash_password(password):
    # 使用SHA-256哈希函數計算密碼的hash值
    return hashlib.sha256(password.encode()).hexdigest()

def find_collision(target_hash):
    attempts = 0
    while True:
        random_password = generate_random_password()
        hashed_password = hash_password(random_password)
        attempts += 1

        if hashed_password == target_hash:
            return random_password, attempts

if __name__ == "__main__":
    target_password = generate_random_password()
    target_hash = hash_password(target_password)

    collision_password, attempts = find_collision(target_hash)

    print(f"目標密碼: {target_password}")
    print(f"目標哈希值: {target_hash}")
    print(f"碰撞密碼: {collision_password}")
    print(f"經過 {attempts} 次嘗試找到碰撞密碼")

結果

目標密碼: 4362
目標哈希值: 43c33bc8917f644809b960cca4aad47030703bdc9e1a526d90a4636627ef0038
碰撞密碼: 4362
經過 5539 次嘗試找到碰撞密碼

心得:colab 0秒就跑完,由此可見純數字短密碼真的很不安全


上一篇
從零開始學資訊安全-DAY20:X.509憑證格式
下一篇
從零開始學資訊安全-DAY22:碰撞練習 英數混和
系列文
從零開始學資訊安全30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言