Функция livecode mergAESEncryptWithKey - PullRequest
0 голосов
/ 20 марта 2020

Я хочу зашифровать данные в реальном коде, используя mergAESEncryptWithKey pData, pKey, pIV, [pMode], [pKeySize], [pPadding]. Зашифрованные данные затем отправляются на php. PhP дешифрует данные, используя ту же функцию, что-то делает с данными, а затем шифрует результаты и отправляет их в livecode. Затем Livecode расшифровывает данные из php

My PHP Код выглядит следующим образом (Это прекрасно работает)

 function encrypt($plaintext, $salt) {
    $method = "AES-256-CBC";
    $key = hash('sha256', $salt, true);
    $iv = openssl_random_pseudo_bytes(32);

    $ciphertext = openssl_encrypt($plaintext, $method, $key, $iv);
    $hash = hash_hmac('sha256', $ciphertext . $iv, $key, true);

    return $iv . $hash . $ciphertext;
}

function decrypt($ivHashCiphertext, $salt) {
    $method = "AES-256-CBC";
    $iv = substr($ivHashCiphertext, 0, 32);
    $hash = substr($ivHashCiphertext, 32, 48);
    $ciphertext = substr($ivHashCiphertext, 64);
    $key = hash('sha256', $salt, true);

    //if (!hash_equals(hash_hmac('sha256', $ciphertext . $iv, $key, true), $hash)) return null;

    return openssl_decrypt($ciphertext, $method, $key, $iv);
}

echo $encrypted."</br>";
echo "----------------------------The message is:<br/>";


echo decrypt($encrypted, 'hashsalt');

1 Ответ

0 голосов
/ 23 марта 2020

Для большинства из вас, кто просто не знает, но все еще хочет оставлять хорошие комментарии, я понял это. @Sammitch и @Mark, задающие вопрос, не означают, что кто-то глуп.

    /*
* Encrypt or decrypt data using 
* AES-256-CBC
*/
function encrypt_decrypt($mode,$data,$key,$salt){
    //define the cipher method 
    $ciphering = "AES-256-CBC"; 
    // Use OpenSSl Encryption method. This works on PHP 7.2 and above
    $iv_length = openssl_cipher_iv_length($ciphering); 
    $options = 0; 

    if($mode=="encrypt"){
        // Use openssl_encrypt() function to encrypt the data 
        $Data = openssl_encrypt($data, $ciphering, $key, $options, $salt);  
    }else{
        // Use openssl_decrypt() function to decrypt the data 
        $Data = openssl_decrypt($data, $ciphering, $key,$options, $salt);
    }



    return $Data;
}

Ооо, и это для livecode

//encrypt
encrypt tString using "aes-256-cbc" with key theKey and IV saltHash at 256 bit

//decrypt
decrypt base64Decode(varEnc) using "aes-256-cbc" with key theKey and IV saltHash at 256 bit
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...