2017-04-19 176 views
-1

我尝试使用js和服务器端解密使用PHP的客户端加密,调试了几个小时才发现,即使他们有相同的加密方法,他们不匹配,不管大小如何等。加密客户端/解密服务器端JS - PHP

有许多加密js库可用,并且php中的crypt(),mcrypt,函数已被弃用。

我试图寻找一对(前。AES.js和AES.php),但他们没有制定出

您能否提供什么好加密方法使用?如何实施它们。因为我相信有一个关键的东西,我也听说过IV,我甚至都不知道。

的jQuery(使用简单SHA256)

$(document).ready(function() { 
    $("#login").on("submit", function(event) { 
     var pass = $("#pass").val(); 
     $("#pass").val(CryptoJS.SHA256(pass)); 
     var data = CryptoJS.AES.encrypt($(this).serialize(), $("#token").val()); 
     $("#login").submit(); 
    }); 
}); 

我想尝试在PHP解密,但mcrypt_decrypt已被弃用。有这个openssl,我不知道如何使用。

+0

你应该在这里展示一些努力。让我们知道你是如何做的,以及你遇到什么问题 –

+0

我一直在使用CryptoJS.AES.encrypt()函数,但我不知道如何使用它匹配它。我在php手册中搜索过,我看到的只是一个弃用的crypt()和mcrypt_decrypt()。而openssl也没有正确记录。一般来说,我一直在做试验和错误,因为我在加密/解密过程中没有任何线索。我知道如何哈希。 –

+0

有多种不同的加密算法。你也必须使用一些密钥来加密数据。当你试图解密你的密码时,这是不对的。因此,在这里分享您的加密和解密代码 –

回答

-1

你可以试试这个代码在PHP

$Pass = "Passwort"; 
$Clear = "Klartext";   

$crypted = fnEncrypt($Clear, $Pass); 
echo "Encrypred: ".$crypted."</br>"; 

$newClear = fnDecrypt($crypted, $Pass); 
echo "Decrypred: ".$newClear."</br>";   

function fnEncrypt($sValue, $sSecretKey) 
{ 
    return rtrim(
     base64_encode(
      mcrypt_encrypt(
       MCRYPT_RIJNDAEL_256, 
       $sSecretKey, $sValue, 
       MCRYPT_MODE_ECB, 
       mcrypt_create_iv(
        mcrypt_get_iv_size(
         MCRYPT_RIJNDAEL_256, 
         MCRYPT_MODE_ECB 
        ), 
        MCRYPT_RAND) 
       ) 
      ), "\0" 
     ); 
} 

function fnDecrypt($sValue, $sSecretKey) 
{ 
    return rtrim(
     mcrypt_decrypt(
      MCRYPT_RIJNDAEL_256, 
      $sSecretKey, 
      base64_decode($sValue), 
      MCRYPT_MODE_ECB, 
      mcrypt_create_iv(
       mcrypt_get_iv_size(
        MCRYPT_RIJNDAEL_256, 
        MCRYPT_MODE_ECB 
       ), 
       MCRYPT_RAND 
      ) 
     ), "\0" 
    ); 
} 

我没有检查它来解密,但是你们引用可能会尝试。

+0

使用mcrypt还可以吗?我真的很早就看到了这个 –

+0

,非常感谢您的耐心,尽管 –

+0

@EhmzYoshinoMamei这个PHP代码并没有像问题中的JavaScript代码那样远程执行。你为什么接受它?你测试过了吗? –

相关问题