Мне весь скрипт не нужен нужен тока по проверки ключевых носителе (флешки)
[Php] usb
Правила форума
Убедительная просьба юзать теги [code] при оформлении листингов.
Сообщения не оформленные должным образом имеют все шансы быть незамеченными.
Убедительная просьба юзать теги [code] при оформлении листингов.
Сообщения не оформленные должным образом имеют все шансы быть незамеченными.
-
ruslanstep1
- мл. сержант
- Сообщения: 92
- Зарегистрирован: 2010-04-14 11:40:46
[Php] usb
Подскажите пожалуйста как можно реализовать такую весч на usb флешки есть некий фаил допустим key так вот на сервоке тотже фаил в mysql допустим есть электронный документ и его нужно подписать чел засовывает свою флешку жмет подписать ключ на флешке проверяется с ключем в БД если подходит все ОК.
Мне весь скрипт не нужен нужен тока по проверки ключевых носителе (флешки)
я просто не знаю как это реализовать. Спасибо
Мне весь скрипт не нужен нужен тока по проверки ключевых носителе (флешки)
Услуги хостинговой компании Host-Food.ru
Тарифы на хостинг в России, от 12 рублей: https://www.host-food.ru/tariffs/hosting/
Тарифы на виртуальные сервера (VPS/VDS/KVM) в РФ, от 189 руб.: https://www.host-food.ru/tariffs/virtualny-server-vps/
Выделенные сервера, Россия, Москва, от 2000 рублей (HP Proliant G5, Intel Xeon E5430 (2.66GHz, Quad-Core, 12Mb), 8Gb RAM, 2x300Gb SAS HDD, P400i, 512Mb, BBU):
https://www.host-food.ru/tariffs/vydelennyi-server-ds/
Недорогие домены в популярных зонах: https://www.host-food.ru/domains/
Тарифы на виртуальные сервера (VPS/VDS/KVM) в РФ, от 189 руб.: https://www.host-food.ru/tariffs/virtualny-server-vps/
Выделенные сервера, Россия, Москва, от 2000 рублей (HP Proliant G5, Intel Xeon E5430 (2.66GHz, Quad-Core, 12Mb), 8Gb RAM, 2x300Gb SAS HDD, P400i, 512Mb, BBU):
https://www.host-food.ru/tariffs/vydelennyi-server-ds/
Недорогие домены в популярных зонах: https://www.host-food.ru/domains/
- Alex Keda
- стреляли...
- Сообщения: 35480
- Зарегистрирован: 2004-10-18 14:25:19
- Откуда: Made in USSR
- Контактная информация:
- ProFTP
- подполковник
- Сообщения: 3388
- Зарегистрирован: 2008-04-13 1:50:04
- Откуда: %&й
- Контактная информация:
-
ruslanstep1
- мл. сержант
- Сообщения: 92
- Зарегистрирован: 2010-04-14 11:40:46
Re: usb
Язык php а БД для сровнения ключа на флехе и БД
-
BSD_daemon
- ефрейтор
- Сообщения: 63
- Зарегистрирован: 2010-10-09 21:51:17
- Откуда: Из тех ворот откуда весь народ
Re: usb
Не совсем понятен метод криптографии, если вы сравниваете что то с чем то, то это симметричное крипто, хотя для подписи обычно используют асимметричный алгоритм, а там все довольно просто, в БД публичный ключ(который и не надо прятать), а на флэхе приватный. Если же симметрия, то сравнивать в лоб ключ с ключом - это дыра, которая легко трассируется.ruslanstep1 писал(а):Язык php а БД для сровнения ключа на флехе и БД
I also known as: "Нефиг_чем_заняться"
-
ruslanstep1
- мл. сержант
- Сообщения: 92
- Зарегистрирован: 2010-04-14 11:40:46
Re: [Php] usb
куда тогда надо копать чтоб это реализовать
-
BSD_daemon
- ефрейтор
- Сообщения: 63
- Зарегистрирован: 2010-10-09 21:51:17
- Откуда: Из тех ворот откуда весь народ
Re: [Php] usb
ruslanstep1 писал(а):куда тогда надо копать чтоб это реализовать
Код: Выделить всё
<?php
$data = "***BASF это вовсе не химический концерн, это - Beer And Sex Forever***";
/*********** берем ключи из файлов ******************************
$pubkey1='/mnt/hddname/......../crt/public-key.crt'; // путь к публичному ключу
$prvkey1='/mnt/flashka/......../key/private.key'; // путь к приватному ключу
$fp = fopen($pubkey1, "r");
$public_key = fread($fp, 8192);
fclose($fp);
$fp = fopen($prvkey1, "r");
$private_key = fread($fp, 8192);
fclose($fp);
*****************************************************************/
// ***************** Или можно захардкодить вместо чтения из файлов
$private_key = <<<EOD
-----BEGIN RSA PRIVATE KEY-----
MIIBO...................................
........................................
........................................
..................................ZFb5CI
-----END RSA PRIVATE KEY-----
EOD;
$public_key = <<<EOD
-----BEGIN PUBLIC KEY-----
MFww.....................................................
.........................................................wEAAQ==
-----END PUBLIC KEY-----
EOD;
// ****************************************************************
$binary_signature = "";
// подписываем
openssl_sign($data, $binary_signature, $private_key, OPENSSL_ALGO_MD5);
echo "<pre>Исходные данные которые будут подписаны:\n--------------------------------\n{$data}\n--------------------------------\n";
echo "Подпись:\n" . chunk_split(base64_encode($binary_signature)) . "\n";
echo "----------- Результат проверка подписи и данных --------------\n";
//$data = $data . '===Левые буковки==='; // проверка искаженных данных
$ok = openssl_verify($data, $binary_signature, $public_key, OPENSSL_ALGO_MD5);
if ($ok == 1) {
echo "Данные не подменены, то бишь валидные. Подпись тоже валидная(приватный ключ сходятся с публичным)\n";
} elseif ($ok == 0) {
echo "Какая-то сцука подменила текст, сообщение не валидно\n";
} else {
echo "Ошибка проверки подписи\n";
}
echo "</pre>";
?>
I also known as: "Нефиг_чем_заняться"
-
ruslanstep1
- мл. сержант
- Сообщения: 92
- Зарегистрирован: 2010-04-14 11:40:46
Re: [Php] usb
спасибо ща посмотрю 
-
ruslanstep1
- мл. сержант
- Сообщения: 92
- Зарегистрирован: 2010-04-14 11:40:46
Re: [Php] usb
вопрос как сделать эти ключи public-key.crt'; /private.key'; 
-
BSD_daemon
- ефрейтор
- Сообщения: 63
- Зарегистрирован: 2010-10-09 21:51:17
- Откуда: Из тех ворот откуда весь народ
Re: [Php] usb
Гхм...ruslanstep1 писал(а):вопрос как сделать эти ключи public-key.crt'; /private.key';
Ну там такая же технология как и в HTTPS.
Читайте здесь:
http://security.ncsa.illinois.edu/resea ... enssl.html
или
http://www.madboa.com/geek/openssl/#cert-self
ключики чтоб побаловаться можете генернуть здесь в онлайн
http://www.mobilefish.com/services/ssl_ ... icates.php
Технология в общем то простая.
Есть центры сертификаци, так называемые CA( - certificate authority ) их задача подтвердить, как третье лицо валидность того, что ключи принадлежат действительно тому, кому они выданы(в зависимости от типа сертификата, валидность может проверяться от банальной проверки по eMail и вплоть до того, что надо будет показать свой паспорт и еще кучу ксив)
Как это работает:
Вы генерируете свой приватный ключ(контент которого никто и никогда не должен увидеть), на его базе генерируется CSR - это как бы будущий ваш публичный ключ и отправляете его в СА, где они за денюшку подпишут его своим ключом, предварительно проверив who you are, после чего вышлют вам подписанный ими ваш публичный ключ, который не есть секрет и может быть расположен публично, но использовать его для раскодировки сможете только вы.
(Грубо говоря это как типа взять рубль, разорвать его на миллиард маленьких клочков, тщательно перемешать и половину оставить у себя, а вторую половину выставить на показ. В этом случае любой может закодировать сообщение вашим публичным ключом, но раскодировать его сможете только вы, так как только у вас есть вторая половина огрызков рубля, которые слепив вместе, можно раскодировать сообщение.)
Т.е. один из ключевых моментов технологии является наличие третьей стороны, подписавшей сертификат. Перед тем как вам отправить сообщение, ваш публичный ключ проверяется с СА, на предмет того, что он действительно принадлежит вам.
Есть два других варианта:
1. Вы не хотите платить до сотни баксов в год, только за то, чтоб СА подписал ваш публичный ключ, тогда вы генерируете self signed сертификат, т.е. вы сами себе становитесь СА и сами же себя подтверждаете. Такой публичный ключ не считается доверяемым, т.к. его никто не перепроверил, а значит его можно в теории подменить.(К сожалению масса российских почтовых серверов работают именно с такими сертификатами, из-за чего приходится пропускать почту с любых таких серваков или поименно заносит их в белые листы)
2. Второй вариант - воспользоваться бесплатным СА, который распознается во всех почтовых клиентах и браузерах. Находится он здесь: http://cert.startcom.org/
Хотя если вы будете использовать сертификаты в замкнутой приватной конторе, то можно обойтись и само-подписанными сертификатами, в этом случае все абоненты просто должны добавить ваш публичный ключ полученный из рук в руки(и под подпись
Ну вообщем это все так, - вкраце о несимметричной криптографии ака SSL/TLS, там еще есть прибамбасы и нюансы в виде CRL и прочей херни
I also known as: "Нефиг_чем_заняться"
-
ruslanstep1
- мл. сержант
- Сообщения: 92
- Зарегистрирован: 2010-04-14 11:40:46
Re: [Php] usb
спасибо большое Вы мне очень помогли 
-
ruslanstep1
- мл. сержант
- Сообщения: 92
- Зарегистрирован: 2010-04-14 11:40:46
Re: [Php] usb
В общем спасибо большое мне это очень помогла
вот теперь все ништяк работает
Код: Выделить всё
<?php
echo'<meta http-equiv="Content-Type" content="text/html; charset=utf-8">';
$data = "прикол прикол";
// открываем ключи
$fp = fopen("/mnt/... /server/private.pem", "r");
$priv_key = fread($fp, 8192);
fclose($fp);
$pkeyid = openssl_get_privatekey($priv_key);
// подписываем
openssl_sign($data, $signature, $pkeyid);
// освабождаем память
openssl_free_key($pkeyid);
echo "<pre>Исходные данные которые будут подписаны:\n--------------------------------\n{$data}\n--------------------------------\n";
echo "Подпись:\n" . chunk_split(base64_encode($signature)) . "\n";
$fp = fopen("/mnt/../flexa/public.pem","r");
$cert = fread($fp, 8192);
fclose($fp);
$pubkeyid = openssl_get_publickey($cert);
// устанавливаем, okay подпись или нет
$ok = openssl_verify($data, $signature, $pubkeyid);
echo "----------- Результат проверка подписи и данных --------------\n";
if ($ok == 1) {
echo "Данные не подменены, то бишь валидные. Подпись тоже валидная(приватный ключ сходятся с публичным)\n";
} elseif ($ok == 0) {
echo "Какая-то сцука подменила текст, сообщение не валидно\n";
} else {
echo "Ошибка проверки подписи\n";
}
openssl_free_key($pubkeyid);
echo "</pre>";
?>
-
ruslanstep1
- мл. сержант
- Сообщения: 92
- Зарегистрирован: 2010-04-14 11:40:46
Re: [Php] usb
прости помогло


