PHP: sha1_file - Manual

downloads | documentation | faq | getting help | mailing lists | reporting bugs | php.net sites | links | conferences | my php.net

search for in the

sha1 setlocale

Last updated: Fri, 26 Jan 2007

view this page in

# sha1_file

(PHP 4 >= 4.3.0, PHP 5)

sha1_file -- Возвращает SHA1 хэш файла

## Описание

string sha1_file ( string filename [, bool raw_output] )

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

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

См. также описание функций sha1(), crc32() и md5_file().

add a note User Contributed Notes
sha1_file
admin at cmsrevolution dot com
04-Aug-2006 08:02
`checking the sha1 of the file. ideal for download scripts making sure the file the user is downloading is not currupt
by checking the sha1 key
<?php
$filename = './Path/To/Your/File.zip';
if (file_exists($filename)) {
echo"i see the file";
} else {
echo "recheck the link file maybe broken";
}
$file = sha1_file('./Path/To/Your/File.zip');
echo"<br>is file hash valid?";
echo"hash = add the hash here<br>";
echo"hash of file :";
print($file);
?>`
gubatron at gmail dot com
10-Feb-2006 07:02
`P2P programs like LimeWire utilize sha1 to identify files. However they do it in base32. Here's an utility class if you want to write a Gnutella client in PHP5
/**
Utility base32 SHA1 class for PHP5
Copyright (C) 2006 Karl Magdsick (original author for Python)
Angel Leon (ported to PHP5)
Lime Wire LLC
This program is free software; you can redistribute it and/or
modify it under the terms of the GNU General Public License
as published by the Free Software Foundation; either version 2
of the License, or (at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
*/
class SHA1 {
static $BASE32_ALPHABET = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ234567';
/** Given a file it creates a magnetmix */
static function fileSHA1($file) {
$raw = sha1_file($file,true);
return SHA1::base32encode($raw);
} //fileSHA1
/** Takes raw input and converts it to base32 */
static function base32encode($input) {
$output = '';
$position = 0;
$storedData = 0;
$storedBitCount = 0;
$index = 0;
while ($index < strlen($input)) {
$storedData <<= 8;
$storedData += ord($input[$index]);
$storedBitCount += 8;
$index += 1;
//take as much data as possible out of storedData
while ($storedBitCount >= 5) {
$storedBitCount -= 5;
$output .= SHA1::$BASE32_ALPHABET[$storedData >> $storedBitCount];
$storedData &= ((1 << $storedBitCount) - 1);
}
} //while
//deal with leftover data
if ($storedBitCount > 0) {
$storedData <<= (5-$storedBitCount);
$output .= SHA1::$BASE32_ALPHABET[$storedData];
}
return $output;
} //base32encode
}`
add a note
sha1 setlocale

Last updated: Fri, 26 Jan 2007
show source | credits | stats | sitemap | contact | advertising | mirror sites
Copyright © 2001-2007 The PHP Group
All rights reserved.
This mirror generously provided by: Yahoo! Inc.
Last updated: Sat Mar 10 10:36:09 2007 PST