Как лучше шифровать ключи с последующей расшифрацией в базе

97
06 июля 2021, 10:00

такой вопрос возник. Есть у меня таблица с api_key ключами от разных сервисов, я хочу их шифровать в базе, но когда достаю из базы мне нужно их расшифровывать.

Нашел способ - XOR шифрование, подставляю туда свой ключ который лежит в файле и он шифрует а потом расшифровывает данные.

function strcode($str, $passw="", $salt = ''){
   $salt    = !empty($salt) ? $salt : "Dn8*#2n!9j";
   $len     = strlen($str);
   $gamma   = '';
   $n       = $len>100 ? 8 : 2;
   while( strlen($gamma)<$len )
   {
      $gamma .= substr(pack('H*', sha1($passw.$gamma.$salt)), 0, $n);
   }
   return $str^$gamma;
}
# Крипнуем
$txt = "Hello XOR encode!";
$txt = base64_encode(strcode($txt, 'daseqws'));
# Декрипт
// $txt = "CgYHv4PxOGXvOOzhBY/mM5M=";
// $txt = strcode(base64_decode($txt), 'daseqws');

В таком случае моя задача выполнена. Если сольют базу - то там будут кракозябры, которые не расшифровать без ключа с которым закриптовали.

Но может есть еще какие-то способы есть? Буду благодарен за подсказки!

READ ALSO
отправка файла с формы(на стороннем сайте) на Битрикс24 Диск(хранилище)

отправка файла с формы(на стороннем сайте) на Битрикс24 Диск(хранилище)

Может быть кто-то сталкивался с такой задачей: нужно отправить файл с формы(на стороннем сайте) на Битрикс24 Диск(хранилище)Суть такова: получив...

96
Как избавиться от большого количества запросов к бд, при попытке вытянуть связи через expand в Yii2?

Как избавиться от большого количества запросов к бд, при попытке вытянуть связи через expand в Yii2?

Разрабатываю RESTful API на фреймворке Yii2На данный момент делаю вторую версию API v2

90
Перевод разницы во времени в часы PHP

Перевод разницы во времени в часы PHP

Как посчитать разницу $gotime - $cometime в (int) часах?

108