MySQL Hashing Function Implementation

Внимание, как представлено в Внимание - это все, что вам нужно , ИМХО, очень похоже на то, что наш мозг использует в качестве механизма внимания.

У нас в мозгу есть что-то по имени LGN, отвечающее за фильтрацию ненужной информации для поставленной задачи. Например, если я начну искать свои ключи, мой мозг будет уделять меньше внимания объектам с цветом, отличным от серебра или золота (надеюсь). Теперь я не знаю о механизмах внимания более высокого уровня человеческого мозга. Однако ясно, что информация проходит через каждый слой перед вниманием и представлена ​​в форме нейронной активности.

Когда вы подаете в свою искусственную модель представление текущего состояния мира, информация будет представлена ​​в виде тензоров, и, аналогично, внимание позволит вам увидеть то, что вам нужно увидеть, чтобы принять лучшее решение (аналогично поиску ключей).

13
задан 3 November 2008 в 22:43
поделиться

3 ответа

Если Вы интересуетесь алгоритмом этой функции, загрузите исходный код и посмотрите файл sql/password.c или проверьте этот реализация.

16
ответ дан 1 December 2019 в 17:32
поделиться

Почему Вы хотите использовать mysql пароль () функция? Даже документация Mysql отговаривает от этого:

http://dev.mysql.com/doc/refman/5.0/en/encryption-functions.html#function_password

ПАРОЛЬ () функция используется системой аутентификации в MySQL Server; Вы не должны использовать его в своих собственных приложениях

, можно использовать md5 (), например, который присутствует почти на каждом языке программирования, php и включенном жемчуге.

4
ответ дан 1 December 2019 в 17:32
поделиться

I originally stumbled across this question in my own search for a PHP implementation of the two MySQL password hashing functions. I was unable to find any implementations, so I adapted my own from the MySQL source code (sql/password.c). The following are tested and working in PHP 5.2:

// The following is free for any use provided credit is given where due.
// This code comes with NO WARRANTY of any kind, including any implied warranty.

/**
 * MySQL "OLD_PASSWORD()" AKA MySQL323 HASH FUNCTION
 * This is the password hashing function used in MySQL prior to version 4.1.1
 * By Defines Fineout 10/9/2009 9:12:16 AM
**/
function mysql_old_password_hash($input, $hex = true)
{
  $nr = 1345345333; $add = 7; $nr2 = 0x12345671; $tmp = null;
  $inlen = strlen($input);
  for ($i = 0; $i < $inlen; $i++) {
    $byte = substr($input, $i, 1);
    if ($byte == ' ' || $byte == "\t") continue;
    $tmp = ord($byte);
    $nr ^= ((($nr & 63) + $add) * $tmp) + (($nr << 8) & 0xFFFFFFFF);
    $nr2 += (($nr2 << 8) & 0xFFFFFFFF) ^ $nr;
    $add += $tmp;
  }
  $out_a = $nr & ((1 << 31) - 1);
  $out_b = $nr2 & ((1 << 31) - 1);
  $output = sprintf("%08x%08x", $out_a, $out_b);
  if ($hex) return $output;
  return hex_hash_to_bin($output);
} //END function mysql_old_password_hash

/**
 * MySQL "PASSWORD()" AKA MySQLSHA1 HASH FUNCTION
 * This is the password hashing function used in MySQL since version 4.1.1
 * By Defines Fineout 10/9/2009 9:36:20 AM
**/
function mysql_password_hash($input, $hex = true)
{
  $sha1_stage1 = sha1($input, true);
  $output = sha1($sha1_stage1, !$hex);
  return $output;
} //END function mysql_password_hash

/**
 * Computes each hexidecimal pair into the corresponding binary octet.
 * Similar to mysql hex2octet function.
**/
function hex_hash_to_bin($hex)
{
  $bin = "";
  $len = strlen($hex);
  for ($i = 0; $i < $len; $i += 2) {
    $byte_hex = substr($hex, $i, 2);
    $byte_dec = hexdec($byte_hex);
    $byte_char = chr($byte_dec);
    $bin .= $byte_char;
  }
  return $bin;
} //END function hex_hash_to_bin

Hopefully someone else will find this useful as well :)

27
ответ дан 1 December 2019 в 17:32
поделиться
Другие вопросы по тегам:

Похожие вопросы: