首页 > 解决方案 > 向多个文件中的现有哈希脚本添加更多哈希

问题描述

我有使用 md5 哈希将密码存储到 MySQL 的 php 脚本文件

这是该 php 文件中的一些现有查询代码

some query part....,MD5('$pass'),.....some query part

一些脚本有小写的 md5

some query part....,md5('$pass'),.....some query part

我的目标是向现有代码添加另一个哈希,例如 sh1

所以预期的查询脚本应该是这样的

some query part....,sh1(MD5('$pass')),.....some query part

最后,当前的 md5 是小写还是大写都无关紧要

我尝试使用 sed 替换该文件,但没有运气

sed -i 's/md5\(.*\)/sha1\(md5\(.*\)\)/gI' *.php

有没有人可以帮助我?

谢谢

标签: bashshellsed

解决方案


您可以使用

sed -i 's/\bmd5([^()]*)/sha1(&)/gI' *.php

POSIX BRE 表达式匹配:

  • \b- 单词边界
  • md5(- 一个md5(子串
  • [^()]*- 0 个或多个字符,而不是(and)
  • )- 一个)字符。

sha1(&)替换模式替换匹配 woth ,然后替换sha1(匹配值,然后)

查看在线演示

s='some query part....,MD5('"'"'$pass'"'"'),.....some query part
some query part....,md5('"'"'$pass'"'"'),.....some query part'
sed 's/\bmd5([^()]*)/sha1(&)/gI' <<< "$s"

输出:

some query part....,sha1(MD5('$pass')),.....some query part
some query part....,sha1(md5('$pass')),.....some query part

推荐阅读