将VBA加密功能转换为PHP

时间:2017-08-10 01:47:30

标签: php vba encryption

我的第一个问题,希望这一切顺利。

我有一个当前在MS Access桌面上使用VBA代码运行的应用程序。当用户登录时,我有一个加密密码的功能。这是:

Public Function EncryptEasy(strIn As String) As String

Dim strChr As String
Dim i As Integer
Dim Salt As Long
Salt = 543214321

For i = 1 To Len(strIn)
  strChr = strChr & CStr(Asc( Mid(strIn, i, 1) ) Xor Salt)
Next I

EncryptEasy = strChr

End Function

为了给你一个想法,当我在VBA中运行EncryptEasy(" test")时,它返回: 543214213543214228543214210543214213

我现在正在使用PHP建立一个简单的Web应用程序,并希望通过将此函数编码为PHP来使用与我目前正在使用的相同的加密。我尝试过以下是我的尝试:

function EncryptEasy($strIn) {

$salt = 543214321;
$strChr = Null;
$strLen = strlen($strIn);

  for ($i = 0; $i <= $strLen; $i++) {
      $strChr = $strChr . chr(ord(substr($strIn, $i, 1)) xor $salt);
  }

  return $strChr;

}

然而,这是空白。我试着回应一下:

<?php
echo EncryptEasy("test");
?>

无济于事。

有人能够看到我出错的地方吗?

1 个答案:

答案 0 :(得分:-1)

我不建议您创建own algorithm for encrypting,而是使用php提供的内置函数。

虽然这不是像原始代码那样加密密码,但使用password_hash比创建自己的密码更容易,并验证使用password_verify()

哈希密码:

<?php
    $hashed = password_hash("somePassword", PASSWORD_DEFAULT);
?>

验证密码

<?php
    if(password_verify('somePassword', $hashed))
    {
        echo 'Same'; //goes here
    } else {
        echo 'Not same';
    }
    if(password_verify('somePasswordsss', $hashed))
    {
        echo 'Same'; 
    } else {
        echo 'Not same'; //goes here
    }
?>