bobo
Новичок
Всем утра, помогите ламеру решить проблему.
Есть небольшой класс шифрования:
Проверяем работу:
Тут все ок, работает как часы.
Все это делается для того, что б в БД можно было хранить данные в зашифрованном виде.
Тут возникла забавная проблема: при записи в БД двузначных чисел, которые оканчиваются на "2", "3", "4", "5", "9" и последующем их выдергивании расшифровке и выводе в браузер пропадает вышеназванная цифра)) Т.е. если ввести 23 и сохранить в БД - выведет 2, если ввести 65 - выведет 6 и т.д.
При проверке без записи в БД вторым кодом все ок
Тип поля в БД varchar(250), пробывал менять - не помогает.
+ Еще хотел спросить: сейчас все это шифруется с помощью стандарта sha1
пробывал использовать md5 - вышеописанная проблема пропадает.
Повторяю, что я ламер, подскажите, есть ли принципиальная разница, какой именно стандарт шифрования использовать и вообще в целом вы сами бы стали использовать нечто подобное для защиты информации в БД, т.е. конкретно данный способ имеет право на жизнь ?
Заранее благодарю за советы!
Есть небольшой класс шифрования:
PHP:
class myCrypt {
private static $salt = "c59d0e730a3bd00239a146a7acd5ca62"; //cryptSalt
private static $overSalt = "3939e70c95745e67a4fb234882e6127b"; //cryptOverSalt
private function __construct($salt,$overSalt) {
$this -> salt = $salt;
$this -> seq = $overSalt;
}
public static function encode($str) {
if ($str != NULL) {
$gamma = "";
while (strlen($gamma) < strlen($str)) {
$overSalt = sha1($gamma.$overSalt.$salt,true);
$gamma .= substr($overSalt,0,8);
}
return $str^$gamma;
}
return NULL;
}
}
PHP:
require_once "../lib/crypt.php";
$str = "16";
$x = myCrypt::encode($str);
echo "Строка для шифрования: <u>".$str."</u>";
//echo "<br><br>Шифруем: <u>".$x."</u>";
echo "<br><br>Шифруем: <u>".htmlspecialchars($x)."</u>";
echo "<br><br>Дешифруем: <u>".htmlspecialchars(myCrypt::encode($x))."</u>";
($str === myCrypt::encode($x)) ? $itog = "Все ок" : $itog = "Ошибка";
echo "<br><br><br><br>Сравниваем строку до шифрования и после: <b>".$itog."</b>";
Все это делается для того, что б в БД можно было хранить данные в зашифрованном виде.
Тут возникла забавная проблема: при записи в БД двузначных чисел, которые оканчиваются на "2", "3", "4", "5", "9" и последующем их выдергивании расшифровке и выводе в браузер пропадает вышеназванная цифра)) Т.е. если ввести 23 и сохранить в БД - выведет 2, если ввести 65 - выведет 6 и т.д.
При проверке без записи в БД вторым кодом все ок

+ Еще хотел спросить: сейчас все это шифруется с помощью стандарта sha1
PHP:
$overSalt = sha1($gamma.$overSalt.$salt,true);
Повторяю, что я ламер, подскажите, есть ли принципиальная разница, какой именно стандарт шифрования использовать и вообще в целом вы сами бы стали использовать нечто подобное для защиты информации в БД, т.е. конкретно данный способ имеет право на жизнь ?
Заранее благодарю за советы!