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

PHP 使用正則表達式驗證 MD5 哈希值格式

     編輯:PHP 綜合知識

MD5 哈希值特徵與驗證邏輯

標準 MD5 輸出為 32 位十六進制字符,僅包含小寫字母 a-f 和數字 0-9。驗證一個字符串是否符合 MD5 格式,核心是檢查長度與字符集。

核心驗證函數

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

正則詳解

  • ^ / $:匹配字符串開始與結束,確保全串符合。
  • [a-f0-9]:允許字符範圍(i 修飾符忽略大小寫)。
  • {32}:精確長度 32 位。

使用示例

$tests = [
    'e10adc3949ba59abbe56e057f20f883e', // 合法
    'E10ADC3949BA59ABBE56E057F20F883E', // 合法(大寫)
    'e10adc3949ba59abbe56e057f20f883',  // 非法:31 位
    'e10adc3949ba59abbe56e057f20f883g', // 非法:含 g
    'not-a-hash',                       // 非法
];

foreach ($tests as $t) {
    echo $t . ' => ' . (is_md5($t) ? '✓' : '✗') . PHP_EOL;
}

擴展:同時支持 SHA1 / SHA256 驗證

function is_hash($str, $algo = 'md5') {
    $lengths = [
        'md5'    => 32,
        'sha1'   => 40,
        'sha256' => 64,
        'sha512' => 128,
    ];
    $len = $lengths[$algo] ?? 32;
    return (bool)preg_match("/^[a-f0-9]{{$len}}$/i", $str);
}

// 用法
is_hash('...', 'sha256');

常見誤區提醒

  • 格式合法 ≠ 内容真實:該函數只能驗證格式,無法判斷該哈希是否真由某數據生成。
  • 大小寫敏感性:數據庫存儲通常統一小寫,比對前建議 strtolower() 統一。
  • 性能:正則對於簡單長度+字符集檢查極快,無需優化。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved