mb5 проблем

pronto

Registered
Значи направих си 1 кодче за забравена парола кадет при популване на таен въпос таен отговор и емаил изкарва паролата на даден потреител


обаче се запунах на финала


в дб паролата се записва в mb5();


и скрипта за забравена парола изкарва тека както е записан в дб

'
как мога да го напрвя след като вземе паролата от дб да я изкарва на потребителя нормална а не mb5
 
Не можеш да я направиш, защото md5 е с необратим алгоритъм.

И се пише md5, не mb5!
 
Можеш да направиш след като потребителя отговори правилно на въпроса, системата да генерира нова парола и да му я изпише, а в базата от данни да замени сегашния md5 хеш с този на новата парола.
 
дай примерен код за генериране на парола


Ако не се баркам трябва да стане с rand


но не сам много сигорен

:)
 
Код:
<?php
function NovaParola()
    {
    $str = '';
    for ($i=1; $i<=10; $i++){
    $set = array(rand (65,90),rand(97,122));
    $str .= chr($set[rand(0,1)]);
    }
    return $str;

}

$parola = NovaParola();

$md5 = md5($parola);

echo $parola."<br />";
echo $md5;
?>
 
ок стана мерси +1


а само да питам можеш ли да го направиш този код да генерира парола само от цифри
 
pronto каза:
ок стана мерси +1


а само да питам можеш ли да го направиш този код да генерира парола само от цифри

Код:
<?php
function NovaParola($length)
    {
  if($length>0) 
  { 
  $rand_id="";
   for($i=1; $i<=$length; $i++)
   {
   mt_srand((double)microtime() * 1000000);
   $num = mt_rand(27,36);
   $rand_id .= assign_rand_value($num);
   }
  }
return $rand_id;
}

$parola = NovaParola('7');

$md5 = md5($parola);

echo $parola."<br />";
echo $md5;
?>
 
Fatal error: Call to undefined function assign_rand_value() in D:\AppServ\www\login\forgot.php on line 34


това е 34 ред- $rand_id .= assign_rand_value($num);
 
Аз казвах същото преди време - md5 е необратим
Обаче тук има урок на Bummer който найстина разбиваше лесни md5 хешове
 
демон ми даде идя как да го направя и го направих


само че някои ако може да напише код който да генерира парола само от цифри ще е перфектно
 
<?php
$arr = array('1','2','3','4','5','6','7','8','9','0');
$kolko = 8; //колко цифри да ти е паролата
for($i=1;$i<=$kolko;$i++;){
$rand = array_rand($arr);
$pass .= $arr[$rand];
}
echo $pass;
?>
 
FestarBG каза:
<?php
$arr = array('1','2','3','4','5','6','7','8','9','0');
$kolko = 8; //колко цифри да ти е паролата
for($i=1;$i<=$kolko;$i++;){
$rand = array_rand($arr);
$pass .= $arr[$rand];
}
echo $pass;
?>


мерси работи :)
 
Код:
        function passwd_generator() {
                $n=16;
                $pattern = "1234567890abcdef";
                $rnd_code="";
                for($i=0;$i<$n;$i++) {
                        $rnd .= $pattern{rand(0,15)};
                }
                return $rnd;
        }
        print passwd_generator();
 
alex95_bg каза:
Аз казвах същото преди време - md5 е необратим
Обаче тук има урок на Bummer който найстина разбиваше лесни md5 хешове

Да, необратим е, но разбира се че могат с брут форс да се разкрива какво се крие зад даден низ.
 
skatebord каза:
Защо да е необратим? Всичко си има синтаксис. ;)

Необратим е. Ето ако не вярваш ми декриптирай това
0de9548659bd7ad9a07d967d4f646ecf
 
Алгоритъм има!
300px-MD5.svg.png

Figure 1. One MD5 operation-MD5 consists of 64 of these operations, grouped in four rounds of 16 operations. F is a nonlinear function; one function is used in each round. Mi denotes a 32-bit block of the message input, and Ki denotes a 32-bit constant, different for each operation.

Което като програмен код би изглеждало така:
Код:
//Note: All variables are unsigned 32 bits and wrap modulo 2^32 when calculating
var int[64] r, k

//r specifies the per-round shift amounts
r[ 0..15] := {7, 12, 17, 22,  7, 12, 17, 22,  7, 12, 17, 22,  7, 12, 17, 22} 
r[16..31] := {5,  9, 14, 20,  5,  9, 14, 20,  5,  9, 14, 20,  5,  9, 14, 20}
r[32..47] := {4, 11, 16, 23,  4, 11, 16, 23,  4, 11, 16, 23,  4, 11, 16, 23}
r[48..63] := {6, 10, 15, 21,  6, 10, 15, 21,  6, 10, 15, 21,  6, 10, 15, 21}

//Use binary integer part of the sines of integers (Radians) as constants:
for i from 0 to 63
    k[i] := floor(abs(sin(i + 1)) × (2 pow 32))

//Initialize variables:
var int h0 := 0x67452301
var int h1 := 0xEFCDAB89
var int h2 := 0x98BADCFE
var int h3 := 0x10325476

//Pre-processing:
append "1" bit to message
append "0" bits until message length in bits ≡ 448 (mod 512)
append bit (bit, not byte) length of unpadded message as 64-bit little-endian integer to message

//Process the message in successive 512-bit chunks:
for each 512-bit chunk of message
    break chunk into sixteen 32-bit little-endian words w[i], 0 ≤ i ≤ 15

    //Initialize hash value for this chunk:
    var int a := h0
    var int b := h1
    var int c := h2
    var int d := h3

    //Main loop:
    for i from 0 to 63
        if 0 ≤ i ≤ 15 then
            f := (b and c) or ((not b) and d)
            g := i
        else if 16 ≤ i ≤ 31
            f := (d and b) or ((not d) and c)
            g := (5×i + 1) mod 16
        else if 32 ≤ i ≤ 47
            f := b xor c xor d
            g := (3×i + 5) mod 16
        else if 48 ≤ i ≤ 63
            f := c xor (b or (not d))
            g := (7×i) mod 16
 
        temp := d
        d := c
        c := b
        b := b + leftrotate((a + f + k[i] + w[g]) , r[i])
        a := temp

    //Add this chunk's hash to result so far:
    h0 := h0 + a
    h1 := h1 + b 
    h2 := h2 + c
    h3 := h3 + d

var int digest := h0 append h1 append h2 append h3 //(expressed as little-endian)

  //leftrotate function definition
  leftrotate (x, c) 
      return (x << c) or (x >> (32-c));

С brute-force ще ти декриптирам всичко. Но действа много мудно - почва от един символ и го увеличава 15 милярда пъти. По изчисления ~100 години за 10 символа. Отписваме тоя вариант. Другия вариант е с една база данни с 15+ милярда думи и изрази и техните md5 хешове. Теоритически - да, практически - не. Така че и този вариант отпада. Друг вариант е C. Взимане на един символ и проверяване на хеша му ако съвпада break;, ако не добавяне на още един символ. След 80 000 опита при ~400 опита в секунда засега нищо не съм намерил по хеша на Сторм.
Ще оставя да рови няколко часа.

btw: Ако намери нещо да го поствам ли тук или ти е някаква парола?
 
Съмнява ме, да е необратим.
След като може да се завие една гайка, следователно може да се отвие.Просто повтаряш същите действия наобратно.
Това, Че алгоритъмът е сложен е отделен въпрос...
 

Back
Горе