Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / Подскажите пожалуйста назначение последней строки / 7 сообщений из 7, страница 1 из 1
24.04.2012, 18:16:43
    #37769028
Подскажите пожалуйста назначение последней строки
Все привет.
Сразу говорю, я имею только общие представления о PHP. Мне нужно переписать часть кода с PHP на C# (шифрование данных карты). И все было бы хорошо, если бы не последняя строка "$cryptedBCData = array_shift($cryptedBCData);". Почитав Manual понял, что array_shift отбрасывает первый элемент массива.
Код: php
1.
2.
3.
4.
5.
6.
7.
8.
$fp = fopen('ppk.ppk', 'r');
$cert = fread($fp, 8192);
fclose($fp);
$private_key = openssl_pkey_get_private($cert); 
$bcData = '<c>4444111111111111</c><x>0119</x><h>CARDHOLDER NAME</h><p>79111112233</p>';
openssl_private_encrypt($bcData, $cryptedBCData, $private_key);
$cryptedBCData = unpack('H*', $cryptedBCData);
$cryptedBCData = array_shift($cryptedBCData);


Собственно вопрос, зачем???
...
Рейтинг: 0 / 0
24.04.2012, 18:23:57
    #37769045
Hett
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Подскажите пожалуйста назначение последней строки
Не отбрасывает, а извлекает
...
Рейтинг: 0 / 0
24.04.2012, 18:33:19
    #37769076
Подскажите пожалуйста назначение последней строки
Hett,
Т.е. возвращает архив без первого элемента, так? Ну я это и имел ввиду. Только мне все равно не понятно зачем.
...
Рейтинг: 0 / 0
24.04.2012, 21:43:18
    #37769424
Hett
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Подскажите пожалуйста назначение последней строки
Нет.
Извлекает первый элемент и возвращает его.
По идее из $cryptedBCData вытащится первый элемент, но потом он запишется в переменную $cryptedBCData.
Что в итоге будет потом в $cryptedBCData? - первый элемент.
...
Рейтинг: 0 / 0
24.04.2012, 22:05:12
    #37769453
Подскажите пожалуйста назначение последней строки
Hett, большое спасибо! Но теперь я вообще ничего понять не могу...
openssl_private_encrypt($bcData, $cryptedBCData, $private_key); - по идее в нее возвращается массив байтов зашифрованного текста.
Далее, если я не ошибаюсь, байты переводятся в строку командой unpack('H*', $cryptedBCData).
Далее мы из строки (т.е. массива символов) извлекаем первый элемент - это я как понимаю первый символ.
Правильно я понял?
...
Рейтинг: 0 / 0
24.04.2012, 22:14:26
    #37769459
Hett
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Подскажите пожалуйста назначение последней строки
Там видимо идут какие-то коды символов (возможно ASCII), которые потом с помощью unpack переводятся в текстовые данные. В итоге на выходе имеется массив с одним элементом, который потом извлекается. По сути можно было сделать

Код: php
1.
$cryptedBCData = $cryptedBCData[0];



Если есть возможность выполнять скрипты, то проще поглядеть что там за данные на каждом шаге.
...
Рейтинг: 0 / 0
24.04.2012, 22:32:29
    #37769476
Подскажите пожалуйста назначение последней строки
Hett, еще раз спасибо!
Нет, к сожалению посмотреть не получится. Но суть я понял!
...
Рейтинг: 0 / 0
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / Подскажите пожалуйста назначение последней строки / 7 сообщений из 7, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]