Въпросче за Кодиране на пароли?

macmen

Registered
Здравейте бихте ли ми казали как е най-добре да се кодират паролите с md5,sha1 или sha256
 
md5 => 128 битово хеширане. => 32 символа hash
sha1 => 160 битово хеширане. => 40 символа hash
sha256 => 256 битово хеширане. => не съм сигурен.

http://en.wikipedia.org/wiki/Secure_Hash_Algorithm

Но при всяко положение ако използваш дълга парола със символи букви и цифри ще ти е защитена.
И отново едно "НО" , има online търсачки за hash-ове пълни с md5 hash-ове.
Тези с sha1 са по-малко от което се подразбира , че е по-добре sha1.
А и е 160 битово а не 128 като md5.
Макар че масово се използва md5 , това не го прави най-сигурно ;)
И трите вида алгоритми хешират текста и го превръщат в хеш с уникална стойност. ;)
 
но да приемем, че и при трите няма обратна функция нали, демек декодиране
 
macmen каза:
но да приемем, че и при трите няма обратна функция нали, демек декодиране

Може да си направиш нещо средно като използваш md5 + salt.
Код:
<?php

$parola = "moqtaparola";
$salt = "%^*)P";
$new_parola = md5($salt.$parola.$salt);
echo $new_parola;

?>
 
Fakeheal каза:
macmen каза:
но да приемем, че и при трите няма обратна функция нали, демек декодиране

Може да си направиш нещо средно като използваш md5 + salt.
Код:
<?php

$parola = "moqtaparola";
$salt = "%^*)P";
$new_parola = md5($salt.$parola.$salt);
echo $new_parola;

?>
Също така може някакви специални символи под UTF-8.
:?:
 
macmen каза:
аз съм го измислил така
sha256(username.pass.symbol);
Не е добро решение. Защото когато потребител реши да си смени паролата какво правим? създаваш му нова сесия/бисквитка?
По-добре направи sha256(symbol.id.username). Потребителят нито може да си смени id-то нито може да си смени потребителското име.
:?:
 
проблема е никъкъв. Като даден потребител си е забравил паролата аз не му генерирам нова. Просто генерирам даден стринг и го записвам в дадено поле в таблицата и като изпрати заявка за нова парола аз му изпращам този код както и потребителското име и след това го насочвам към форма за смяна на паролата. Така сменям паролите аз
А аз не давам да се сменя username. Все пак създавам сесия с него
 
macmen каза:
проблема е никъкъв. Като даден потребител си е забравил паролата аз не му генерирам нова. Просто генерирам даден стринг и го записвам в дадено поле в таблицата и като изпрати заявка за нова парола аз му изпращам този код както и потребителското име и след това го насочвам към форма за смяна на паролата. Така сменям паролите аз
А аз не давам да се сменя username. Все пак създавам сесия с него
Да, НО представи си, че поставиш фукция за смяна на паролата на потребител който се е логнал. Тоест имаш Настройки и вътре Смяна на парола. Той така я сменя, след като я смени ще трябва автоматично да бъде изхвърлен от акаунта си, защото паролата е различна от тази в сесията/бисквитката, или пък да направиш нова сесия или бисквитка пак има шанс да го изкара от акаунта и той да трябва да влиза отново.
 
macmen каза:
е нали при логина имаш POST заявка с username
Нищо общо няма POST заявката с това което записваш при регистрация. Това потребителско име което се регистрира не може да се смени, докато паролата която се регистрира може. Искам да ти кажа, че когато потребителят се регистрира в твоят сайт, той задава потребителско име и парола. След регистрация той получава id. Когато влезе в базата данни това id и това потребителско име не могат да се променят от потребителят, а паролата може. Тоест когато се логва той задавва потребителското име и парола му се създава сесия/бисквитка с id-то и потребителското име. И от там нататък изобщо не го касае дали ще си промени паролата или не. Докато ако записваш паролата, тогава вече когато смени парола трябва да създаваш наново самата сесия/бисквитка и тогава вече не се знае дали ще го накара пак да се логва в сайта или не.
:?:
 
Понеже ми стана интерестно,се опитах да си направа някакъв безмислен алгоритъм за криптиране :D не съм го тествал :)

Код:
<?
function Encrypt_vk($string)
{
$split = str_split($string);

$i = 0;

foreach ( $split as $row )
{
$md = md5($row);
$ot = $i*2;
$izrez = substr($md,$ot,2);
$array[] = $izrez;
$i = $i + 1;
}

$implode = implode("",$array);
$hash = sha1($implode);

return $hash;
}




$string = "LOLZOR";
echo Encrypt_vk($string);
?>

Естествено няма да е бързо ,но мисля ,че трудно ще се декодира ;)
 
vik96 каза:
Понеже ми стана интерестно,се опитах да си направа някакъв безмислен алгоритъм за криптиране :D не съм го тествал :)

Код:
<?
function Encrypt_vk($string)
{
$split = str_split($string);

$i = 0;

foreach ( $split as $row )
{
$md = md5($row);
$ot = $i*2;
$izrez = substr($md,$ot,2);
$array[] = $izrez;
$i = $i + 1;
}

$implode = implode("",$array);
$hash = sha1($implode);

return $hash;
}




$string = "LOLZOR";
echo Encrypt_vk($string);
?>

Естествено няма да е бързо ,но мисля ,че трудно ще се декодира ;)
Аз бих му предложил това: http://web-tourist.net/forum/viewtopic.php?t=83500#450008
 
sha256 е 256 бита / 8 = 32 байта => 64 символа в HEX вариант

http://web-tourist.net/forum/viewtopic.php?p=581626#581626
 

Back
Горе