PHP-windows和ubuntu之间的密码加密是不同的

PHP-windows和ubuntu之间的密码加密是不同的,php,windows,ubuntu-16.04,Php,Windows,Ubuntu 16.04,我们有两台服务器在运行。旧的WindowsServer2008和新的Ubuntu服务器16.04.1。我的任务是匹配数据库中的加密密码和用户的密码类型。在Windows服务器上我尝试运行加密密码的源代码,它工作正常,匹配。但是在Ubuntu服务器上运行时,它会返回如下字符�����因此我无法同时匹配这两个密码。 我已经寻找解决方案好几天了,这在服务器配置上吗?我运行相同的代码,但不同服务器的输出不同。谢谢你的帮助 加密代码: function fn_EncryptPassword() {

我们有两台服务器在运行。旧的
WindowsServer2008
和新的
Ubuntu服务器16.04.1
。我的任务是匹配数据库中的加密密码和用户的密码类型。在
Windows服务器上
我尝试运行加密密码的
源代码
,它工作正常,匹配。但是在
Ubuntu服务器上运行时,它会返回如下字符
�����因此我无法同时匹配这两个密码。
我已经寻找解决方案好几天了,这在服务器配置上吗?我运行相同的代码,但不同服务器的输出不同。谢谢你的帮助

加密代码:

function fn_EncryptPassword() {
    $arg = func_get_args();

    foreach ($arg as $key => $args) {
        $_retval = '';
        $args=strtoupper(trim($args));
        for ($i=1; $i<=strlen($args); $i++) {
            $_retval.=chr(ord(substr($args,$i-1,1)) + 100);
        }
    }
    return $_retval;
} 
函数fn\u EncryptPassword(){
$arg=func_get_args();
foreach($arg作为$key=>$args){
$_retval='';
$args=strtoupper(修剪($args));
对于($i=1;$i
函数fn\u EncryptPassword(){
$arg=func_get_args();
foreach($arg作为$key=>$args){
$_retval='';
$args=strtoupper(修剪($args));

对于($i=1;$iIs,您有没有理由不使用
password\u hash()
?解决方案可能是自动解密基本密码中的所有密码,并使用更好的方法(如
password\u hash()对其进行加密)
。您的类似于“Caesar”的编码算法非常弱。但至少您可以检索纯文本密码…最后,您不应该将所有密码转换为大写,这只会使所有密码更弱。@NigelRen此代码很久以前就被系统使用。它已被用于数千个存储密码,直到现在。作为Nigel话虽如此,现在正是切换到使用
密码\u hash()
的好时机,这样密码才真正得到保护。这也将解决问题标题中的问题,而且很可能也是未来的证明。
function fn_EncryptPassword() {
    $arg = func_get_args();

    foreach ($arg as $key => $args) {
        $_retval = '';
        $args=strtoupper(trim($args));
        for ($i=1; $i<=strlen($args); $i++) {
            $_retval.=chr(ord(substr($args,$i-1,1)) + 100);
        }
    }
    return utf8_encode($_retval);
}



echo fn_EncryptPassword('şçogby*/');