From 8591959edf23eb58edbe4d15317f79ab5bf67d5c Mon Sep 17 00:00:00 2001 From: bruno Date: Wed, 21 Jun 2023 16:09:23 -0400 Subject: [PATCH] =?UTF-8?q?substituir=20mcrypt=20no=20arquivo=20shared.php?= =?UTF-8?q?=20por=20openssl=20na=20encripta=C3=A7=C3=A3o.=20Mcrypt=20foi?= =?UTF-8?q?=20removida=20php7.2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- include/funcoes/shared.php | 95 ++++++++++++++++++++++++++++++++------ 1 file changed, 82 insertions(+), 13 deletions(-) diff --git a/include/funcoes/shared.php b/include/funcoes/shared.php index 0457758a..03d03b33 100644 --- a/include/funcoes/shared.php +++ b/include/funcoes/shared.php @@ -7,6 +7,8 @@ define("_LOG_MSG_ERROR", 1); define("_LOG_MSG_ALL", 2); define("_LOG_MSG_DISPLAY", 3); + + /* * funcoes compartilhadas * - GetDddPadrao()($numero) -> Se passado um numero retorna concatenado com ddd padrao, se nao retorna somente o ddd. @@ -549,28 +551,95 @@ function logBkp($msg, $logDate = true, $echo = true) { GravaLog($log, BackupConfig::$logFile); } + +/* + * Função defini chave default + */ function KeyCrypt($key = '') { return $key ? $key : "A32589Ba83F3aA5a8b1737339604B609"; } + + +/* + * Função retorna o tamanho do valor IV (vetor de inicialização) para criptografar e descriptogradar + * + * https://pt.wikipedia.org/wiki/Vetor_de_inicializa%C3%A7%C3%A3o + * + * \return 16 + */ +function Crypt_IVSize(){ + return 16; +} + +/* + * Função retorna o tamanho da chave usada pela criptografia + * + * AES-256 = 256 bits = 32 bytes + * + * \return 32 + */ +function Crypt_KeyAESSize(){ + return 32; +} + + +/* + * Retorna a string aes-256-cbc para usar openssl + * + * \return "aes-256-cbc" + */ +function Crypt_CipherAES(){ + return "aes-256-cbc"; +} + + +/* + * Encripta text AES-256 + * + * \param $text dados para encriptar + * \param $key chave para encriptar, se for vazio obterá da função KeyCrypt + * + * A chave passada pela hash e obtido apenas o primeiro 32 bytes + * + * \return retorna dados cifrado em base64 + */ function Encrypt($text, $key = '') { - $ivSize = mcrypt_get_iv_size(MCRYPT_RIJNDAEL_256, MCRYPT_MODE_CBC); - $keySize = mcrypt_get_key_size(MCRYPT_RIJNDAEL_256, MCRYPT_MODE_CBC); - $iv = mcrypt_create_iv($ivSize, MCRYPT_DEV_URANDOM); - $key = substr(hash('sha256', KeyCrypt($key)), 0, $keySize); - $encryptedData = mcrypt_encrypt(MCRYPT_RIJNDAEL_256, $key, $text, MCRYPT_MODE_CBC, $iv); + + $ivSize = Crypt_IVSize(); + $keySize = Crypt_KeyAESSize(); + + $iv = random_bytes($ivSize); + $key = substr( hash('sha256', KeyCrypt( $key )), 0, $keySize ); + + $encryptedData = openssl_encrypt($text, Crypt_CipherAES(), $key, OPENSSL_RAW_DATA, $iv ); + + // base64([iv 0 - 16] + cripty) return base64_encode($iv . $encryptedData); } -function Decrypt($text, $key = '') { - $ivSize = mcrypt_get_iv_size(MCRYPT_RIJNDAEL_256, MCRYPT_MODE_CBC); - $keySize = mcrypt_get_key_size(MCRYPT_RIJNDAEL_256, MCRYPT_MODE_CBC); - $data = base64_decode($text, true); + +/* + * DEcripta text + * + * \param $data dados cifrado + * \param $key chave para descriptografar, vazio obterá da função KeyCrypt + * + * \return retorna os dados decriptado + */ +function Decrypt($data, $key = '') { + $ivSize = Crypt_IVSize(); + $keySize = Crypt_KeyAESSize(); + + $data_enc = base64_decode($data, true); $key = substr(hash('sha256', KeyCrypt($key)), 0, $keySize); - $iv = substr($data, 0, $ivSize); - $data = substr($data, $ivSize); - $data = mcrypt_decrypt(MCRYPT_RIJNDAEL_256, $key, $data, MCRYPT_MODE_CBC, $iv); - return rtrim($data, "\0"); + + $iv = substr($data_enc, 0, $ivSize); + $data_enc = substr($data_enc, $ivSize); + + $data_dec = openssl_decrypt( $data_enc, Crypt_CipherAES(), $key, OPENSSL_RAW_DATA, $iv ); + + return rtrim($data_dec, "\0"); } function ErrorGetLast($type = "message") {