首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 網頁程式設計 >> PHP 程式設計 >> PHP 相關知識

PHP 驗證字串是否為 MD5 雜湊值:單行正則實作

     編輯:PHP 相關知識

前言

MD5 雜湊值固定為 32 位十六進位字元 (0-9, a-f)。驗證一個字串是否符合 MD5 格式,只需一行正則即可完成。

實作函數

function is_md5(string $str): bool {
    return (bool)preg_match('/^[a-f0-9]{32}$/i', $str);
}

// 測試
var_dump(is_md5('e10adc3949ba59abbe56e057f20f883e')); // true (123456)
var_dump(is_md5('E10ADC3949BA59ABBE56E057F20F883E')); // true (大寫)
var_dump(is_md5('e10adc3949ba59abbe56e057f20f883'));  // false (31 碼)
var_dump(is_md5('e10adc3949ba59abbe56e057f20f883g')); // false (含 g)

正則解析

  • ^:字串開頭。
  • [a-f0-9]:十六進位字元 (不區分大小寫,因 i 修飾符)。
  • {32}:精確 32 個字元。
  • $:字串結尾。

進階:同時驗證 SHA1 / SHA256

function is_hash(string $str, string $algo = 'md5'): bool {
    $lengths = ['md5' => 32, 'sha1' => 40, 'sha256' => 64];
    if (!isset($lengths[$algo])) return false;
    return (bool)preg_match('/^[a-f0-9]{' . $lengths[$algo] . '}$/i', $str);
}

常見誤區

  1. 以為 MD5 加密:MD5 是單向雜湊,不可逆,非加密。
  2. 直接用於密碼儲存:MD5 已被破解,請用 password_hash() (bcrypt/argon2)。
  3. 忽略大小寫:正則加 i 修飾符同時匹配大小寫,資料庫儲存建議統一小寫。

總結

preg_match('/^[a-f0-9]{32}$/i', $str) 即可精準驗證 MD5 格式。記住:格式驗證 ≠ 安全性驗證,請勿將 MD5 用於密碼保護。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved