Проблемы с кодировкой при шифровании

252
08 июня 2018, 08:00

Использую данный класс для шифрования

     <?
namespace app\components;
class UnsafeCrypto
{
const METHOD = 'aes-256-ctr';
/**
* Encrypts (but does not authenticate) a message
*
* @param string $message - plaintext message
* @param string $key - encryption key (raw binary expected)
* @param boolean $encode - set to TRUE to return a base64-encoded
* @return string (raw binary)
*/
public static function encrypt($message, $key, $encode = false)
{
$nonceSize = openssl_cipher_iv_length(self::METHOD);
$nonce = openssl_random_pseudo_bytes($nonceSize);
$ciphertext = openssl_encrypt(
$message,
self::METHOD,
$key,
OPENSSL_RAW_DATA,
$nonce
);
// Now let pack the IV and the ciphertext together
// Naively, we can just concatenate
if ($encode) {
return base64_encode($nonce.$ciphertext);
}
return $nonce.$ciphertext;
}
/**
* Decrypts (but does not verify) a message
*
* @param string $message - ciphertext message
* @param string $key - encryption key (raw binary expected)
* @param boolean $encoded - are we expecting an encoded string?
* @return string
*/
public static function decrypt($message, $key, $encoded = false)
{
if ($encoded) {
$message = base64_decode($message, true);
if ($message === false) {
throw new Exception('Encryption failure');
}
}
$nonceSize = openssl_cipher_iv_length(self::METHOD);
$nonce = mb_substr($message, 0, $nonceSize, '8bit');
$ciphertext = mb_substr($message, $nonceSize, null, '8bit');
$plaintext = openssl_decrypt(
$ciphertext,
self::METHOD,
$key,
OPENSSL_RAW_DATA,
$nonce
);
return $plaintext;
}
}

Если не загружать данные в БД, то всё ОК кодирует и декодирует нормально. После загрузки в бд (у неё кодировка utf8_general_ci) а затем при получении закодированных данных из бд и при попытке их расшифровать ничего не выходит. В чём может быть дело?

READ ALSO
Yii2 Nav::widget убрать ul, li

Yii2 Nav::widget убрать ul, li

Как корректно убрать теги списка ul , li из выдачи виджетом? Пример

277
Загрузка большого файла на сервер

Загрузка большого файла на сервер

Надо загружать файл размером около 1GBБыла идея нарезать файл с помощью javascript , передать эту часть ajax`ом и на сервере все склеить

240
Не работает условие? PHP

Не работает условие? PHP

Почему не срабатывает условие? По факту, получается - если 403 != 403 то присваиваем trueОчевидно, что здесь условие не работает, но оно, все равно,...

256
Ошибка при выводе из бд

Ошибка при выводе из бд

Ошибка от браузера (или openserver): "mysqli_fetch_array() expects parameter 1 to be mysqli_result"Нужно из бд просто вывести через php поля, делаю так:

267