Browse Source

substituir mcrypt no arquivo shared.php por openssl na encriptação. Mcrypt foi removida php7.2

ajuste_divisao
bruno 1 year ago
parent
commit
8591959edf
  1. 95
      include/funcoes/shared.php

95
include/funcoes/shared.php

@ -7,6 +7,8 @@ define("_LOG_MSG_ERROR", 1);
define("_LOG_MSG_ALL", 2); define("_LOG_MSG_ALL", 2);
define("_LOG_MSG_DISPLAY", 3); define("_LOG_MSG_DISPLAY", 3);
/* /*
* funcoes compartilhadas * funcoes compartilhadas
* - GetDddPadrao()($numero) -> Se passado um numero retorna concatenado com ddd padrao, se nao retorna somente o ddd. * - 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); GravaLog($log, BackupConfig::$logFile);
} }
/*
* Função defini chave default
*/
function KeyCrypt($key = '') { function KeyCrypt($key = '') {
return $key ? $key : "A32589Ba83F3aA5a8b1737339604B609"; 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 = '') { 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); $ivSize = Crypt_IVSize();
$iv = mcrypt_create_iv($ivSize, MCRYPT_DEV_URANDOM); $keySize = Crypt_KeyAESSize();
$key = substr(hash('sha256', KeyCrypt($key)), 0, $keySize);
$encryptedData = mcrypt_encrypt(MCRYPT_RIJNDAEL_256, $key, $text, MCRYPT_MODE_CBC, $iv); $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); 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); * DEcripta text
$data = base64_decode($text, true); *
* \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); $key = substr(hash('sha256', KeyCrypt($key)), 0, $keySize);
$iv = substr($data, 0, $ivSize);
$data = substr($data, $ivSize); $iv = substr($data_enc, 0, $ivSize);
$data = mcrypt_decrypt(MCRYPT_RIJNDAEL_256, $key, $data, MCRYPT_MODE_CBC, $iv); $data_enc = substr($data_enc, $ivSize);
return rtrim($data, "\0");
$data_dec = openssl_decrypt( $data_enc, Crypt_CipherAES(), $key, OPENSSL_RAW_DATA, $iv );
return rtrim($data_dec, "\0");
} }
function ErrorGetLast($type = "message") { function ErrorGetLast($type = "message") {

Loading…
Cancel
Save