regex - 正则表达式: searching an arbitrary file for MD5

标签 regex md5

请参阅以下 34 个字符的 ASCII 字符串。我正在尝试在此字符串上匹配 3 个 MD5 哈希值。

8AC905DD4AB2038E5F7EABEAE792AC41BC

[A-F0-9]{32} 仅匹配前 32 个字符。

这是我的二进制逆向工程项目的一部分。

如何从提到的字符串中获得 3 个不同的匹配项?任何想法都会受到赞赏。

干杯,

最佳答案

您没有说您使用什么语言,因此我提供了两个片段 - 用于 Python 和 PHP。但这里的线索是 (?=([A-F0-9]{32})) 模式(请参阅下面的示例)。

解决方案(Python)

有一个解决方案,下面是用Python编写的:

>>> import re 
>>> data = '8AC905DD4AB2038E5F7EABEAE792AC41BC'
>>> matches = re.finditer(r'(?=([A-F0-9]{32}))', data)
>>> results = [match.group(1) for match in matches]

测试

结果将是(如 this demo ):

>>> results
['8AC905DD4AB2038E5F7EABEAE792AC41', 'AC905DD4AB2038E5F7EABEAE792AC41B', 'C905DD4AB2038E5F7EABEAE792AC41BC']

这正是您所期待的。

解决方案(PHP)

在 PHP 中,它可能如下所示:

<?php

$data = '8AC905DD4AB2038E5F7EABEAE792AC41BC';
$results = array();
preg_match_all('/(?=([A-F0-9]{32}))/', $data, $results);

并且 $results 将是以下数组:

Array
(
    [0] => 8AC905DD4AB2038E5F7EABEAE792AC41
    [1] => AC905DD4AB2038E5F7EABEAE792AC41B
    [2] => C905DD4AB2038E5F7EABEAE792AC41BC
)

参见this demo求一个证明。

关于regex - 正则表达式: searching an arbitrary file for MD5,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8424326/

相关文章:

c++ - 从哪里获取 GitHub 版本的 MD5 哈希?

java - 检查文件的 MD5

javascript - 为什么 md5 转换与预期不同?

sql - PostgreSQL 和 regexp_split_to_array + unnest

php 或 javascript 正则表达式 - 将第一个字母和其余字符串作为 2 个单独的值返回

php - 测试 PHP 中的正则表达式是否有效

PHP.net 说 md5() 和 sha1() 不适合作为密码?

Python 正则表达式问题

java - 不能在 Java 中分割一行

linux - 命令 'md5sum' 最后没有 '-' token