Добрый день!)
Кто-нить работал с phpseclib ? (
http://phpseclib.sourceforge.net/)
<?php
include 'Crypt/RSA.php';
$rsa = new Crypt_RSA();
$z = $rsa->createKey();
$plaintext = 'text for crypting !';
$rsa->loadKey($z['publickey']);
$ciphertext = $rsa->encrypt($plaintext);
$rsa->loadKey($z['privatekey']);
echo $rsa->decrypt($ciphertext);
Всё работает, всё ок.
Вопрос в следующем, при распечатке ключей $z['publickey'] & $z['privatekey'] - они хранятся в формате:
-----BEGIN PUBLIC KEY-----
MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC+ZWfaQQ9IdS6T83db2k01DW6D
KFPbaWjrAyBgtPbMl+2giN4uJQNcKNL3EF2NXucxIET9RCCfJdfAzF5IZgnVfo6T
/yaz28+YXuCnyM+ryVi70lr2DsqGPlIzr0VjpYEgS8LkUTDIDz/DEkWpc3MTPbkC
ZH4va1t6MSgNpBImBwIDAQAB
-----END PUBLIC KEY-----
base64 я так понимаю, а мне надо хранить ключи именно в hex-формате и в базе.
Как конвертировать правильно эту шнягу в hex формат?
_____________
Я думал я буду сеять добро, но у меня не получилось. Во-первых, мне помешали, во-вторых я сам отрекся от этой идеи.
И нет, это не base64, это ключи в формате ключей.
function strToHex($string){
$hex = '';
for ($i=0; $i<strlen($string); $i++){
$ord = ord($string[$i]);
$hexCode = dechex($ord);
$hex .= substr('0'.$hexCode, -2);
}
return strToUpper($hex);
}
function hexToStr($hex){
$string='';
for ($i=0; $i < strlen($hex)-1; $i+=2){
$string .= chr(hexdec($hex[$i].$hex[$i+1]));
}
return $string;
}
_____________
"Нужно быть готовым прислушиваться к тем, кто может тебя чему-нибудь научить. Иначе ты никогда не вырастешь."
Откровенно я никому ниразу не нагрубил. А дать подзатыльник зарвавшемуся юнцу, так это и ему на пользу, и мне в удовольствие. ©
AllesKlar
Гость_Илья
10.01.2016 - 21:13
Всем привет!
К сожалению, не могу разобраться:
<?php
include 'Crypt/RSA.php';
$rsa = new Crypt_RSA();
$z = $rsa->createKey(); // генерим ключи
$plaintext = 'text for crypting !'; // текст для шифрования
$rsa->loadKey($z['publickey']); // загружаем публ. ключ
$ciphertext = $rsa->encrypt($plaintext); // шифрование
$rsa->loadKey($z['privatekey']); // загружаем закр. ключ
echo $rsa->decrypt($ciphertext); // дешифровка обратно
Выдаёт
Warning: include_once(Math/BigInteger.php) [function.include-once]: failed to open stream: No such file or directory in Z:\home\localhost\www\sets\lbs\Crypt\RSA.php on line 497
Warning: include_once() [function.include]: Failed opening 'Math/BigInteger.php' for inclusion (include_path='.;C:\php\pear') in Z:\home\localhost\www\sets\lbs\Crypt\RSA.php on line 497
Fatal error: Class 'Math_BigInteger' not found in Z:\home\localhost\www\sets\lbs\Crypt\RSA.php on line 554
А если скопировать папку Math в папку к rsa.php, то вообще браузер зависает.
Пожалуйста, помогите.
Игорь_Vasinsky
11.01.2016 - 06:52
Цитата |
Warning: include_once(Math/BigInteger.php) [function.include-once]: failed to open stream: No such file or directory in Z:\home\localhost\www\sets\lbs\Crypt\RSA.php |
Цитата |
Fatal error: Class 'Math_BigInteger' not found in Z:\home\localhost\www\sets\lbs\Crypt\RSA.php on line 554 |
это для кого выводиться?
_____________
HTML, CSS (Bootstrap), JS(JQuery, ExtJS), PHP, MySQL, MSSql, Posgres, (TSql, BI OLAP, MDX), Mongo, Git, SVN, CodeIgnater, Symfony, Yii 2, JiRA, Redmine, Bitbucket, Composer, Rabbit MQ, Amazon (SQS, S3, Transcribe), Docker
Гость_Илья
11.01.2016 - 20:37
Ну в первый раз ладно, код не посмотрел. Но когда файл-то куда просят скопируешь, почему браузер ничего не выдаёт, а только бесконечно грузит страницу?