【发布时间】:2015-10-30 12:42:52
【问题描述】:
我正在使用一种简单的方法来修改密码,使其不以纯文本形式存储。这是在生产数据库和应用程序上运行的,直到从 Windows Server 2003 切换到 2012 为止。
private function simpleCrypt($password) {
$text = strtoupper(trim($password));
$chars = str_split($text);
$password2 = '';
foreach ($chars as $char) {
$asciivalue = ord($char);
if ($asciivalue < 128) {
$newasciivalue = $asciivalue + 128;
$newchar = chr($newasciivalue);
$password2 = $password2 . $newchar;
} elseif ($asciivalue > 128) {
$newasciivalue = $asciivalue - 128;
$newchar = chr($newasciivalue);
$password2 = $password2 . $newchar;
}
}
return $password2;
}
当我的密码通过此脚本运行时,它会显示 �� 与其他系统在 2003 年生成的实际编码密码的结果。它显示正确的“西方”字符。如果我使用 Firefox 并将文本编码更改为西方,那么它会向我显示密码的正确数据库表示。我尝试在登录页面上将元数据添加到我的标题中,认为它会纠正这个问题,但我得到了相同的结果。
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
【问题讨论】:
标签: php mysql encryption unicode