Как получить хеш файла php

Обновлено: 04.07.2024

Я сейчас студент и изучаю PHP, я пытаюсь сделать простое шифрование/дешифрование данных в PHP. Я провел несколько онлайн - исследований, и некоторые из них были довольно запутанными (по крайней мере, для меня). Вот , что я пытаюсь сделать .

У меня есть таблица, состоящая из таких полей (UserID, Fname, Lname, Email, Password).

Я хочу, чтобы все поля были зашифрованы, а затем расшифрованы (можно ли использовать sha256 для шифрования/дешифрования, если нет, то какой-нибудь другой алгоритм шифрования).

Еще одна вещь, которую я хочу узнать, это – как создать односторонний хэш (sha256) в сочетании с хорошим «salt». (По сути, я просто хочу иметь простую реализацию шифрования/дешифрования, используя хэш(sha256)+salt).

Ответ 1

  1. Поля Fname , Lname и Email будут зашифрованы с помощью симметричного шифра, предоставляемой OpenSSL

  2. В IV поле будет храниться вектор инициализации, используемый для шифрования. Требования к хранилищу зависят от используемого шифра и режима; подробнее об этом – позже.

  3. Поле Password будет хэшироваться с использованием одностороннего хэш - пароля.

Шифрование

Шифр и режим

Выбор лучшего шифра и режима шифрования выходит за рамки этого ответа, но окончательный выбор влияет на размер, как ключа шифрования, так и вектора инициализации; для этого ответа мы будем использовать AES-256-CBC, который имеет фиксированный размер блока 16 байтов и размер ключа 16, 24 или 32 байта.

Ключ шифрования

Хороший ключ шифрования - это двоичный объект, который генерируется надежным генератором случайных чисел. Рекомендуется следующий пример (PHP > = 5,3):

$key_size = 32; // 256 bits

$encryption_key = openssl_random_pseudo_bytes($key_size, $strong);

// $strong будет истинным, если ключ криптобезопасен

Это можно сделать один или несколько раз (если вы хотите создать цепочку ключей шифрования). Держите их как можно конфиденциальнее.

IV

Вектор инициализации добавляет случайности шифрованию и требуется для режима CBC. В идеале эти значения следует использовать только один раз (технически – один раз для каждого ключа шифрования), поэтому обновление любой части строки должно создавать ее заново.

Предоставляется функция, которая поможет вам сгенерировать IV:

$iv_size = 16; // 128 bits

$iv = openssl_random_pseudo_bytes($iv_size, $strong);

Пример:

Давайте зашифруем поле имени, используя предыдущие $encryption_key и $iv ; для этого мы должны дополнить наши данные размером блока:

function pkcs7_pad($data, $size)

$length = $size - strlen($data) % $size;

return $data . str_repeat(chr($length), $length);

>

$name = 'Jack';

$enc_name = openssl_encrypt(

pkcs7_pad($name, 16), // заполненные данные

'AES-256-CBC', // шифр и режим

$encryption_key, // секретный ключ

0, // опции (не используются)

$iv // вектор инициализации

);

Требования к хранилищу

Выходное значение, как и IV, является двоичным кодом; для хранения этих значений в MySQL рассмотрите возможность использования столбцов BINARY или VARBINARY. Если это вам не подходит, вы также можете преобразовать двоичные данные в текстовое представление, используя base64_encode() или bin2hex() , для этого потребуется от 33% до 100% больше места для хранения.

Расшифровка

Расшифровка сохраненных значений аналогична:

function pkcs7_unpad($data)

return substr($data, 0, -ord($data[strlen($data) - 1]));

>

$row = $result->fetch(PDO::FETCH_ASSOC); // чтение из базы данных

// $enc_name = base64_decode($row['Name']);

// $enc_name = hex2bin($row['Name']);

$enc_name = $row['Name'];

// $iv = base64_decode($row['IV']);

// $iv = hex2bin($row['IV']);

$iv = $row['IV'];

$name = pkcs7_unpad(openssl_decrypt(

$enc_name,

'AES-256-CBC',

$encryption_key,

0,

$iv

));

Аутентифицированное шифрование

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

Пример

// сгенерировать один раз и сохранить

$auth_key = openssl_random_pseudo_bytes(32, $strong);

// аутентификация

$auth = hash_hmac('sha256', $enc_name, $auth_key, true);

$auth_enc_name = $auth . $enc_name;

// верификация

$auth = substr($auth_enc_name, 0, 32);

$enc_name = substr($auth_enc_name, 32);

$actual_auth = hash_hmac('sha256', $enc_name, $auth_key, true);

if (hash_equals($auth, $actual_auth))

// выполнение расшифровки

>

Можно также использовать функцию hash_equals()

Хеширование

  1. PBKDF2 (функция вывода ключей на основе пароля v2)

  2. bcrypt (он же Blowfish)

Ответ 2

Справочная информация и объяснение

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

Вы хотите использовать двустороннюю функцию, а точнее блочный шифр . Функция, позволяющая осуществлять как шифрование, так и дешифрование данных. Функции mcrypt_encrypt и mcrypt_decrypt по умолчанию используют алгоритм Blowfish. Использование mcrypt в PHP можно найти в руководстве . Также существует список определений шифров для выбора шифра, который использует mcrypt. Блочный шифр шифрует вход в блоках известного размера и положения с известным ключом, так что данные могут быть позже расшифрованы с помощью ключа. Это то, что SHA256 не может вам предоставить.

$key = 'ThisIsTheCipherKey';

$ciphertext = mcrypt_encrypt(MCRYPT_BLOWFISH, $key, 'This is plaintext.', MCRYPT_MODE_CFB);

$plaintext = mcrypt_decrypt(MCRYPT_BLOWFISH, $key, $encrypted, MCRYPT_MODE_CFB);

Ответ 3

Ответ 4

В от пример использования openssl_encrypt

// Шифрование:

$textToEncrypt = "My Text to Encrypt";

$encryptionMethod = "AES-256-CBC";

$secretHash = "encryptionhash";

$iv = mcrypt_create_iv(16, MCRYPT_RAND);

$encryptedText = openssl_encrypt($textToEncrypt,$encryptionMethod,$secretHash, 0, $iv);

// Дешифровка:

$decryptedText = openssl_decrypt($encryptedText, $encryptionMethod, $secretHash, 0, $iv);

print "My Decrypted Text: ". $decryptedText;

Мы будем очень благодарны

если под понравившемся материалом Вы нажмёте одну из кнопок социальных сетей и поделитесь с друзьями.

В предыдущей статье на примере простой хеш-функции MD5 мы рассмотрели способы, которые позволяют создавать достаточно устойчивые от взлома хеши. Но для того, чтобы обеспечить должную сложность восстановления пароля, необходимо было создать отдельный PHP-скрипт, реализующий нужное замедление MD5-функции с применением сформированной соли.

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

В частности, будет рассмотрен вариант использования функции crypt() с Blowfish-шифрованием и добавлением к параметру алгоритма "Blowfish автоматически генерированной уникальной "соли". Данный метод создания хеша ранее был применен при создании скрипта для отправки формы онлайн заказа.

В качестве второго варианта будет приведен пример использования встроенного API хеширования паролей (API - интерфейс прикладного программирования, англ. application programming interface) .

В котором сначала одной из функций API password_hash() будет создан хеш пароля, а затем другой функцией password_verify() будет проведена проверка на соответствие хеша вновь введенному паролю.

При этом следует отметить, что второй вариант, с применением API хеширования паролей возможен только при работе с определенными версиями PHP, а именно: с версии 5.5 и выше. Поэтому, кто в своей работе пользуется более ранними версии PHP, это обстоятельство необходимо учитывать при выборе способа хеширования.

  • Использование функции crypt()
  • Создание хеша функцией password_hash()
  • Проверка на соответствие хеша паролю при помощи функции password_verify()
  • Исходные файлы сайта

Использование функции crypt()

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

В нашем случае при использовании crypt() будем применять алгоритм Blowfish-шифрования с добавлением автоматически генерированной уникальной соли, с количеством интераций, позволяющем замедлить выполнение функции до величины в пределах 100 миллисекунд. Что вполне оптимально, как для пользователей, так и для обеспечения должной защиты.

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

//Вычисление хэша с помощью функции crypt()

$start_time = microtime (true);

$salt = bin2hex ( openssl_random_pseudo_bytes (11));

$hash = crypt ($password, '$2y$10$' .$salt. '$' );

$delta_time = microtime (true) - $start_time;

$cash_time = round ($delta_time * 1000000 , 0 ). 'мкс.' ;

echo nl2br ( 'crypt(): пароль - ' .$password. ', соль - ' .$salt.', хеш - '.$hash. ', время вычисления - ' .$cash_time. "\n" );

Рис.1 Вычисление хэша с помощью функции crypt()

Алгоритм выполнения функции crypt() (поз.7) определяется вторым ее параметром. Где в первой его части префиксом $2y$ задается вид шифрования Blowfish, вторые две цифры между символами $ определяют количество интераций (в данном случае 2^10 = 1024), а остальные 22 символа между $ назначают соль, с использованием которой будет происходить преобразование.

При формировании соли $salt здесь приведено два варианта. Первый - тот, который использовался ранее с генерацией функцией mt_rand() случайного числа с дальнейшим получением из него sha1-хэша и извлечением с помощью substr() строки в 22 символа (поз.5). Где 22 символа, это условие, которое допускается указывать при определении соли в параметрах функции crypt() в случае использовании шифрования Blowfish.

Дополнительно приведен и второй способ получения соли с использованием другой генерирующей функции - openssl_random_pseudo_bytes() , на выходе которой формируется псевдослучайная последовательность из 11-ти байт. После чего полученные бинарные данные с применением функции bin2hex() преобразуются в шестнадцатеричное представление с нужной 22-ти символьной строкой (поз.6).

Один из вариантов, в данном случае первый (поз.5), закомментирован. Так что сейчас проверка создания хеша будет проводиться с использованием функции openssl_random_pseudo_bytes() , которая ранее нами не применялась.

После размещения этого кода в файл "main.php" папки "articles", определенного ранее как место, для временного вывода на страницу сайта результатов хеширования, снова обновим главную страницу и посмотрим на полученный результат.

Результат получения хеша с помощью функции crypt()

Рис.2 Результат получения хеша с помощью функции crypt()

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

Приведенный пример использования функции crypt() - получение хеша, которое выполняется обычно при регистрации или других аналогичных операций. А как быть в случае проверки пароля, которую необходимо проводить при авторизации пользователя?

Ниже показан код, с помощью которого используя crypt() можно сделать такую проверку.

//Проверка на соответствие хеша паролю с помощью функции crypt()

$new_salt = substr ($hash, 0 , 29 );

$new_hash = crypt ($password, $new_salt. '$' );

echo nl2br ( 'пароль - ' .$password. ', соль с префиксом $2y$ и весовым параметром интераций - ' .$new_salt. ', новый хеш - ' .$new_hash. "\n\n" );

if ($hash == $new_hash)

echo 'Пароль правильный' ;

echo 'Пароль неправильный' ;

Рис.3 Проверка на соответствие хеша паролю с помощью функции crypt()

Здесь с помощью оператора сравнения if (поз.7) производится проверка хеша, находящегося в базе данных в виде переменной $hash с хешем, сформированным при проверке введенного пароля $new_hash .

При этом соль, необходимая для вычисления нового значения хеша $new_hash , вместе с префиксом $2y$ и весовым параметром интераций, формируется из хеша, ранее сохраненного в базе данных hash , путем извлечения из него с помощью функции substr() из первых 29-ти символов (поз.4). Что соответствует тому же значению второго параметра функции, которое использовалось ранее при создании хеша (поз.7, рис.1).

А само значения хеша, соответствующего вновь введенному паролю, формируется функцией crypt() с использованием соответствующих параметров (поз.5).

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

Я сейчас студент и изучаю PHP, я пытаюсь сделать простое шифрование/дешифрование данных в PHP. Я провел несколько онлайн - исследований, и некоторые из них были довольно запутанными (по крайней мере, для меня). Вот , что я пытаюсь сделать .

У меня есть таблица, состоящая из таких полей (UserID, Fname, Lname, Email, Password).

Я хочу, чтобы все поля были зашифрованы, а затем расшифрованы (можно ли использовать sha256 для шифрования/дешифрования, если нет, то какой-нибудь другой алгоритм шифрования).

Еще одна вещь, которую я хочу узнать, это – как создать односторонний хэш (sha256) в сочетании с хорошим «salt». (По сути, я просто хочу иметь простую реализацию шифрования/дешифрования, используя хэш(sha256)+salt).

Ответ 1

  1. Поля Fname , Lname и Email будут зашифрованы с помощью симметричного шифра, предоставляемой OpenSSL

  2. В IV поле будет храниться вектор инициализации, используемый для шифрования. Требования к хранилищу зависят от используемого шифра и режима; подробнее об этом – позже.

  3. Поле Password будет хэшироваться с использованием одностороннего хэш - пароля.

Шифрование

Шифр и режим

Выбор лучшего шифра и режима шифрования выходит за рамки этого ответа, но окончательный выбор влияет на размер, как ключа шифрования, так и вектора инициализации; для этого ответа мы будем использовать AES-256-CBC, который имеет фиксированный размер блока 16 байтов и размер ключа 16, 24 или 32 байта.

Ключ шифрования

Хороший ключ шифрования - это двоичный объект, который генерируется надежным генератором случайных чисел. Рекомендуется следующий пример (PHP > = 5,3):

$key_size = 32; // 256 bits

$encryption_key = openssl_random_pseudo_bytes($key_size, $strong);

// $strong будет истинным, если ключ криптобезопасен

Это можно сделать один или несколько раз (если вы хотите создать цепочку ключей шифрования). Держите их как можно конфиденциальнее.

IV

Вектор инициализации добавляет случайности шифрованию и требуется для режима CBC. В идеале эти значения следует использовать только один раз (технически – один раз для каждого ключа шифрования), поэтому обновление любой части строки должно создавать ее заново.

Предоставляется функция, которая поможет вам сгенерировать IV:

$iv_size = 16; // 128 bits

$iv = openssl_random_pseudo_bytes($iv_size, $strong);

Пример:

Давайте зашифруем поле имени, используя предыдущие $encryption_key и $iv ; для этого мы должны дополнить наши данные размером блока:

function pkcs7_pad($data, $size)

$length = $size - strlen($data) % $size;

return $data . str_repeat(chr($length), $length);

>

$name = 'Jack';

$enc_name = openssl_encrypt(

pkcs7_pad($name, 16), // заполненные данные

'AES-256-CBC', // шифр и режим

$encryption_key, // секретный ключ

0, // опции (не используются)

$iv // вектор инициализации

);

Требования к хранилищу

Выходное значение, как и IV, является двоичным кодом; для хранения этих значений в MySQL рассмотрите возможность использования столбцов BINARY или VARBINARY. Если это вам не подходит, вы также можете преобразовать двоичные данные в текстовое представление, используя base64_encode() или bin2hex() , для этого потребуется от 33% до 100% больше места для хранения.

Расшифровка

Расшифровка сохраненных значений аналогична:

function pkcs7_unpad($data)

return substr($data, 0, -ord($data[strlen($data) - 1]));

>

$row = $result->fetch(PDO::FETCH_ASSOC); // чтение из базы данных

// $enc_name = base64_decode($row['Name']);

// $enc_name = hex2bin($row['Name']);

$enc_name = $row['Name'];

// $iv = base64_decode($row['IV']);

// $iv = hex2bin($row['IV']);

$iv = $row['IV'];

$name = pkcs7_unpad(openssl_decrypt(

$enc_name,

'AES-256-CBC',

$encryption_key,

0,

$iv

));

Аутентифицированное шифрование

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

Пример

// сгенерировать один раз и сохранить

$auth_key = openssl_random_pseudo_bytes(32, $strong);

// аутентификация

$auth = hash_hmac('sha256', $enc_name, $auth_key, true);

$auth_enc_name = $auth . $enc_name;

// верификация

$auth = substr($auth_enc_name, 0, 32);

$enc_name = substr($auth_enc_name, 32);

$actual_auth = hash_hmac('sha256', $enc_name, $auth_key, true);

if (hash_equals($auth, $actual_auth))

// выполнение расшифровки

>

Можно также использовать функцию hash_equals()

Хеширование

  1. PBKDF2 (функция вывода ключей на основе пароля v2)

  2. bcrypt (он же Blowfish)

Ответ 2

Справочная информация и объяснение

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

Вы хотите использовать двустороннюю функцию, а точнее блочный шифр . Функция, позволяющая осуществлять как шифрование, так и дешифрование данных. Функции mcrypt_encrypt и mcrypt_decrypt по умолчанию используют алгоритм Blowfish. Использование mcrypt в PHP можно найти в руководстве . Также существует список определений шифров для выбора шифра, который использует mcrypt. Блочный шифр шифрует вход в блоках известного размера и положения с известным ключом, так что данные могут быть позже расшифрованы с помощью ключа. Это то, что SHA256 не может вам предоставить.

$key = 'ThisIsTheCipherKey';

$ciphertext = mcrypt_encrypt(MCRYPT_BLOWFISH, $key, 'This is plaintext.', MCRYPT_MODE_CFB);

$plaintext = mcrypt_decrypt(MCRYPT_BLOWFISH, $key, $encrypted, MCRYPT_MODE_CFB);

Ответ 3

Ответ 4

В от пример использования openssl_encrypt

// Шифрование:

$textToEncrypt = "My Text to Encrypt";

$encryptionMethod = "AES-256-CBC";

$secretHash = "encryptionhash";

$iv = mcrypt_create_iv(16, MCRYPT_RAND);

$encryptedText = openssl_encrypt($textToEncrypt,$encryptionMethod,$secretHash, 0, $iv);

// Дешифровка:

$decryptedText = openssl_decrypt($encryptedText, $encryptionMethod, $secretHash, 0, $iv);

print "My Decrypted Text: ". $decryptedText;

Мы будем очень благодарны

если под понравившемся материалом Вы нажмёте одну из кнопок социальных сетей и поделитесь с друзьями.

Главная Строковые функции Строковые суммы и хеш-функции

Возвращает длину строки.
Синтаксис:

Возвращает просто длину строки, т.е., сколько символов содержится в str.
Строка может содержать любые символы, в том числе и с нулевым кодом. Функция strlen() будет правильно работать и с такими строками.

Возвращает SHA1 хэш строки (PHP 4 >= 4.3.0, PHP 5)

Возвращает хэш строки str, вычисленный по алгоритму US Secure Hash Algorithm 1. Хэш представляет собой 40-разрядное шестнадцатиричное число. Если необязательный аргумент raw_output имет значение TRUE, хэш возвращается в виде двоичной строки из 20 символов.

Замечание: Необязательный аргумент raw_output был добавлен в PHP 5.0.0 и по умолчанию равен FALSE.

Пример использования sha1()

count_chars

Возвращает информацию о символах строки.
Синтаксис:

Функция count_chars() подсчитывает частоту встречаемости каждого байта (0-255) в строке str и возвращает в массиве результат согласно необязательному аргументу mode. mode может принимать следующие значения:

0 (по умолчанию)- массив с байтами в качестве индексов и частотой повторения в качестве значений
элемента массива
1 - похож на 0, но отсутствующие в строке str байты не возвращаются
2 - похож на 0, но возвращаются только те байты, которые отсутствуют
3 - возвращается строка, состоящая из всех обнаруженных символов
4 - возвращается строка, состоящая из всех отсутствующих символов

Получение строки-хеша MD5.

Возвращает хеш-код строки str, основанный на алгоритме корпорации RSA Data Security под названием "MD5 Message-Digest Algorithm".

Хеш-код - это просто строка, практически уникальная для каждой из строк str. То есть вероятность того, что две разные строки, переданные в str, дадут нам одинаковый хеш-код, стремиться к нулю.
В то же время, если длина строки str может достигать нескольких тысяч символов, то ее MD5-код занимает максимум 32 символа.

Получение полиминала строки crc32.

Функция crc32() вычисляет 32-битную контрольную сумму строки str. То есть, результат ее работы - 32-битное (4-байтовое) целое число.
Обычно эту функцию используют для проверки целостности переданных данных.
Эта функция работает гораздо быстрее md5(), но в то же время выдает гораздо менее надежные "хеш-коды"
для строки.
Так что, теперь, чтобы получить методом случайного подбора для двух разных строк одинаковые "хеш-коды",
вам потребуется не триллион лет работы самого мощного компьютера, а всего лишь год-другой.

Производит симметричное шифрование.
Синтаксис:

В аргументе str задается строка, которую надо зашифровать.
Хеш-код для одной и той же строки, но с различными значениями salt (Кстати, это должна быть обязательно двухсимвольная строка) дает разные результаты. Если параметр salt пропущен, PHP сгенерирует его случайным образом.
В системах, которые поддерживают несколько алгоритмов шифрования, следующие константы устанавливаются равными 1 или 0, в зависимости от того, поддерживается ли данный алгоритм или нет:

CRYPT_STD_DES - стандартное 2-байтовое DES-шифрование (SALT=2)
CRYPT_EXT_DES - расширенное 9-байтовое DES-шифрование (SALT=9)
CRYPT_MD5 - 12-байтовое MD5-шифрование (SALT начинается с $1$)
CRYPT_BLOWFISH - расширенное 12-байтовое DES-шифрование (SALT начинается с $2$)

Т.к. данная функция использует односторонний алгоритм шифрования, то функции дешифрования не имеется.

Производит вычисление метафон-хеша.
Синтаксис:

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

Вычисления хеша сходности произношения.
Синтаксис:

Функция soundex() используется для проверки правописания, когда приблизительно известно как звучит слово, но не известно, как оно пишется, и имеется словарь (база данных), относительно которого можно осуществить проверку.
Возвращается строка из 4 символов: первая буква слова и 3 цифры.

Возвращает MD5 хэш файла (PHP 4 >= 4.2.0, PHP 5)

Вычисляет MD5 хэш файла, имя которого задано аргументом filename используя алгоритм MD5 RSA Data Security, Inc. и возвращает этот хэш. Хэш представляет собой 32-значное шестнадцатеричное число. Если необязательный аргумент raw_output имеет значение TRUE, то возвращается бинарная строка из 16 символов.

Замечание: Необязательный аргумент raw_output был добавлен в PHP 5.0.0 и по умолчанию равен FALSE

По назначению эта функция аналогична консольной программе md5sum

Возвращает SHA1 хэш файла (PHP 4 >= 4.3.0, PHP 5)

Вычисляет SHA1 хэш файла, имя которого задано аргументом filename, используя алгоритм US Secure Hash Algorithm 1 и возвращает этот хэш. Хэш представляет собой 40-значное шестнадцатеричное число. Если необязательный аргумент raw_output имеет значение TRUE, то возвращается двоичная строка из 20 символов.

Замечание: Необязательный аргумент raw_output был добавлен в PHP 5.0.0 и по умолчанию равен FALSE

Читайте также: