HexDec to Char to Password Unencrypt в PHP - PullRequest
       11

HexDec to Char to Password Unencrypt в PHP

0 голосов
/ 15 сентября 2010

Хорошо, поэтому я пытаюсь выяснить, как перейти от шестнадцатеричного шифрования к строковому и обратно, но по какой-то причине, когда я шифрую, я получаю не тот пароль, который был передан, но его закрытие. .. странно верно? Я уверен, что мой синтаксис где-то не так. Помощь

Вот ссылка для проверки небольшого случайного пароля. Я установил 'pw' как шестнадцатеричную версию и передал ее в: посмотреть демо

<code>$encoded  = (string)$_GET['pw'];  
$literals = explode(' ', wordwrap($encoded, 2, ' ', 2));  
$password = '';  

for ($i = 0; $i < count($literals); $i++) {  
    $password .= chr(hexdec($literals[$i]) - $i);  
}

echo $password . '<br />';
print_r($literals) . '<br />';
$passarray = str_split($password);

echo '<pre>';
print_r($passarray);
echo '
'; для ($ i = 0; $ i

UPDATE:

. На самом деле я не пытаюсь «зашифровать» систему безопасности как таковую… Я на самом деле пытаюсь автоматизировать создание файлов Dreamweaver Site Definition, и это «шифрование», которое они используют для полускрытия пароля , Я могу сделать это уже, скопировав файл и вставив разные имена пользователей, но я бы тоже хотел каждый раз выдавать и новый пароль. просто к вашему сведению

Ответы [ 3 ]

3 голосов
/ 15 сентября 2010

Посмотрите ближе на эту строку:

$password .= chr(hexdec($literals[$i]) - $i);

Вы уменьшаете значение на $i. Таким образом, каждый шаг, значение будет $literals[$i] - $i.

Это обратное выше сказанному:

$newpassword .= dechex(ord($passarray[$i]) + $i);
1 голос
/ 02 июля 2012

Спасибо вышеупомянутому Лекенштейну за код обращения. В моем тестировании казалось, что Dreamweaver также ожидает заглавные буквы, поэтому я добавил strtoupper, как показано ниже. Я использовал этот код для динамического создания файлов определений сайтов Dreamweaver (.ste) из списка доменов и учетных данных ftp.

function dw_encode_pw($pw='') {
    $password = '';
    $passarray = str_split($pw);

    for($i = 0; $i < count($passarray); $i++) {
        $password .= strtoupper(dechex(ord($passarray[$i]) + $i));
    }
    return $password;
}

function dw_decode_pw($pw='') {
    if (empty($pw)) {
        return false;
    }

    $encoded  = (string) $pw;
    $literals = explode(' ', wordwrap($encoded, 2, ' ', 2));
    $password = '';
    for ($i = 0; $i < count($literals); $i++) {
        $password .= chr(hexdec($literals[$i]) - $i);
    }

    return $password;
}

также благодаря http://blog.affirmix.com/2008/08/28/encoded-passwords-in-ste-site-definition-files/ и http://www.matthewratzloff.com/blog/2007/04/18/decrypting-a-dreamweaver-site-definition-password/, которые также исследуют эту тему ...

Надеюсь, это поможет кому-то другому, ищущему это решение!

0 голосов
/ 15 сентября 2010

Шестнадцатеричный код - это не шифрование , а, в лучшем случае, кодировка (фактически это в основном числовая база) Похоже, вы смешиваете базовое преобразование и шестнадцатеричное кодирование самой кодировки символов.

  • hexdec превратит 0, 1, 9, A, F, 10 в 0, 1, 9, 10, 15, 16 соответственно.
  • chr превратит десятичное число в символ (используя кодировку ASCII)
  • Не уверен, почему вы вычитаете $i в полученное вами значение.
  • С другой стороны, bin2hex фактически дает вам шестнадцатеричное представление двоичной последовательности данных (по крайней мере, чтобы ее можно было распечатать). Это не обязательно противоположность chr(hexdec(...)).

В целом, неясно, какой тип защиты паролем вы здесь пытаетесь получить, поскольку это просто кодировка.

...