Вверх ↑
Этот топик читают: Гость
Ответов: 321
Рейтинг: 10
#1: 2018-11-09 13:33:44 ЛС | профиль | цитата
Здравствуйте ув. участники форума. Подскажите пожалуйста, как лучше всего шифровать данные отсылаемые на сервер ?!
Вернее вопрос даже не в том как лучше, а какой способ подходит в данном случае для php обработчика ?!

Есть программа, есть сервер, с которого подгружаются в программу данные (из бд сервера).
Нужно реализовать защиту этих данных, чтобы нельзя было отловить сниффером и изменить их.
карма: 1

0
vip
#1.1контекстная реклама от партнеров
Ответов: 4621
Рейтинг: 746
#2: 2018-11-09 13:58:48 ЛС | профиль | цитата
Настроить HTTPS на сервере, всё остальное заработает само без изменений.
карма: 26

0
Ответов: 321
Рейтинг: 10
#3: 2018-11-09 16:02:02 ЛС | профиль | цитата
Netspirit писал(а):
Настроить HTTPS на сервере, всё остальное заработает само без изменений.


А если http только ?!
Вот простой вариант из примеров...
Add(MainForm,12142676,532,210)
{
Width=637
Height=383
Caption="Пример Cryptography"
}
Add(Cryptography,6973355,616,273)
{
link(onCrypt,4588001:doValue,[])
link(Data,15424103:Text,[])
link(Key,1782352:Var2,[])
}
Add(Cryptography,5267281,623,357)
{
link(onCrypt,12306924:doText,[])
link(Data,4588001:Value,[(629,339)(685,339)])
link(Key,1782352:Var3,[(636,300)(638,300)(638,257)])
}
Add(Button,7836147,532,273)
{
Left=525
Top=75
Caption="crypt"
link(onClick,6973355:doCrypt,[])
}
Add(Button,5106960,532,357)
{
Left=60
Top=285
Caption="encrypt"
link(onClick,5267281:doCrypt,[])
}
Add(Edit,15424103,616,161)
{
Left=120
Top=75
Width=400
Text="hiasm"
}
Add(Edit,12306924,805,357)
{
Left=120
Top=285
Width=400
Text=""
}
Add(Edit,12437416,917,273)
{
Left=120
Top=135
Width=400
Text=""
}
Add(Edit,3895954,623,210)
{
@Color=22015
Left=120
Top=15
Width=400
Text="xorkey"
}
Add(Label,13384348,532,161)
{
Left=26
Top=17
Width=61
Height=17
Font=[MS Sans Serif,8,1,255,1]
Caption="XOR_KEY"
}
Add(GetDataEx,1782352,623,252)
{
link(Data,3895954:Text,[])
}
Add(StreamConvertor,11115644,805,273)
{
Mode=2
link(onResult,12437416:doText,[])
}
Add(Memory,4588001,679,273)
{
link(onData,12568105:doEvent1,[])
}
Add(Hashsum,96254,973,406)
{
HashType=1
link(onResult,8471905:doText,[])
}
Add(Button,12629218,532,406)
{
Left=525
Top=135
Caption="+SHA"
link(onClick,5138011:doEvent1,[])
}
Add(Edit,8471905,1036,406)
{
Left=120
Top=165
Width=400
Text=""
}
Add(Label,6353965,364,210)
{
Left=26
Top=47
Width=60
Height=17
Font=[MS Sans Serif,8,1,255,1]
Caption="SHA_KEY"
}
Add(Edit,9108430,805,315)
{
Left=120
Top=105
Width=400
Text=""
}
Add(Hub,12568105,742,273)
{
link(onEvent1,11115644:doConvert,[])
link(onEvent2,9108430:doText,[(780,286)(780,321)])
}
Add(Label,16760565,30,110)
{
Left=26
Top=77
Width=35
Height=17
Font=[MS Sans Serif,8,1,32768,1]
Caption="string"
}
Add(Edit,902147,973,273)
{
@Color=22015
Left=120
Top=45
Width=400
Text="shakey"
}
Add(Label,2685614,51,109)
{
Left=26
Top=107
Width=60
Height=17
Font=[MS Sans Serif,8,1,32768,1]
Caption="string(xor)"
}
Add(Label,2240250,50,103)
{
Left=26
Top=137
Width=87
Height=17
Font=[MS Sans Serif,8,1,32768,1]
Caption="string(xor+hex)"
}
Add(StrCatDelim,14398264,917,406)
{
Delimiter="_"
link(onStrCatDlm,96254:doHashsum,[])
link(Str1,7339693:Var2,[])
link(Str2,902147:Text,[(930,324)(979,324)])
}
Add(FormatStr,4313665,1029,476)
{
Mask="str=%1;\r\nsha_hash=%2;"
link(onFString,13790867:doAdd,[])
link(Str1,7339693:Var3,[(1035,369)])
link(Str2,8471905:Text,[])
}
Add(Memo,13790867,1127,476)
{
Left=120
Top=195
Width=400
}
Add(Hub,5138011,623,406)
{
link(onEvent1,14398264:doStrCatDlm,[])
link(onEvent2,4313665:doString,[(833,419)(833,482)])
}
Add(GetDataEx,7339693,917,364)
{
link(Data,12437416:Text,[])
}




________________________________________________________

Задачи:
-Защита содержимого от чтения передаваемых данных (используем xor шифрование).
-Защита содержимого от редактирования данных из вне (используем sha1).


Защита не очень, сам понимаю, но пока хотя-бы так реализовать.
________________________________________________________


Извините за тему, тут наверное больше по php вопрос, нежели чем по hiasm, это себе, чтобы двигаться вперед)
Может кому-нибудь пригодится потом.
________________________________________________________

Теперь пишем скрипт php для приема данных от программы:
-проверяем sha1... это наброски, еще не проверял на работоспособность
<?php
$sha_key = 'shakey'; // секретный ключ

$sha1 = sha1( $_POST['str'] . '&' . $sha_key. );

if ($sha1 != $_POST['sha_hash'] ) {
// тут содержится код на случай, если верификация не пройдена
echo "Данные повреждены";
exit;
}
?>

Редактировалось 1 раз(а), последний 2018-11-09 16:03:03
карма: 1

0
Ответов: 4621
Рейтинг: 746
#4: 2018-11-09 16:14:07 ЛС | профиль | цитата
Ну, если ключ хранится в программе - то его легко узнать. Лучший вариант - случайный ключ при каждой сессии, с передачей при помощи асимметричного шифрования (закрытый ключ - на сервере, в программе - только открытый ключ).
карма: 26

0
Ответов: 321
Рейтинг: 10
#5: 2018-11-09 18:26:30 ЛС | профиль | цитата
Netspirit писал(а):
Ну, если ключ хранится в программе - то его легко узнать.

Каким образом ?! Отладчиками типа OllyDbg ?!

Netspirit писал(а):
Лучший вариант - случайный ключ при каждой сессии, с передачей при помощи асимметричного шифрования (закрытый ключ - на сервере, в программе - только открытый ключ).

Извиняюсь, у меня два ключа, для шифрования xor и для создания sha1 хэша, а Вы про какой ?! Ну по логике для xor ?!
Можно чуть подробнее пожалуйста, мне главное, чтобы потом хватило ума написать это все на php.

Получается:
Пользователь запускает приложение.
Приложение отправляет POST-запрос и получает ключ (отличный от ключа на сервере).
Полученный ключ сохраняем в память. Или сохраняем в cookie ?!
Дальше я не знаю как и что =( Это все компонентами от nesco ExportSessionKey и т.д, в эту сторону копать, или это другое ?!

Редактировалось 1 раз(а), последний 2018-11-09 18:27:18
карма: 1

0
Ответов: 4621
Рейтинг: 746
#6: 2018-11-09 18:36:41 ЛС | профиль | цитата
Master4eG писал(а):
Каким образом ?! Отладчиками типа OllyDbg ?!
Да обычным HEX редактором или Блокнотом.
Master4eG писал(а):
Ну по логике для xor ?!
Используется 2 типа шифрования:
- асимметричное RSA (для сервера генерируется ключевая пара - приватный и публичный ключ. Публичный ключ зашивается в программу - его знание никак не помогает расшифровке, поскольку им данные можно только зашифровать)
- блочное шифрование (для каждого сеанса связи или запроса генерируется случайный сессионный ключ, которым шифруются данные. Этот ключ в программе шифруется публичным ключом сервера и отправляется серверу перед отправкой зашифрованных данных. Сервер расшифровывает своим приватным ключом полученный сессионный ключ, а уже им - полученные данные).
Master4eG писал(а):
Это все компонентами от nesco ExportSessionKey и т.д, в эту сторону копать
Да, тот набор компонентов. Но оно там немного запутанно реализовано - ищи/спрашивай примеры.

Редактировалось 4 раз(а), последний 2018-11-09 18:39:25
карма: 26

0
Ответов: 321
Рейтинг: 10
#7: 2018-11-09 21:15:18 ЛС | профиль | цитата
Скачал ваши компоненты (Crypt components mod 2018-05-04), установил, понял, что они уже есть, потом обновил через встроенный svn обратно (правой кнопкой мыши по компоненту), и все накрылось медным тазом. Помогите разобраться, почему ругаться начал ?!


Подготовка к сборке проекта...
Генерация кода целевого языка
Компоновка проекта...
Command line: dcc32.exe "C:\Program Files (x86)\Hiasm\Elements\delphi\code\Project3.dpr" "-UC:\Program Files (x86)\Hiasm\." -Q
Borland Delphi Version 12.0 Copyright (c) 1983,98 Inprise Corporation

C:\Program Files (x86)\Hiasm\Elements\delphi\code\hiEnCrypt.pas(89) Error: Undeclared identifier: 'CRYPT_MODE_CBC'

C:\Program Files (x86)\Hiasm\Elements\delphi\code\hiEnCrypt.pas(90) Error: Undeclared identifier: 'CRYPT_MODE_ECB'

C:\Program Files (x86)\Hiasm\Elements\delphi\code\hiEnCrypt.pas(91) Error: Undeclared identifier: 'CRYPT_MODE_CFB'

C:\Program Files (x86)\Hiasm\Elements\delphi\code\hiEnCrypt.pas(92) Error: Undeclared identifier: 'CRYPT_MODE_CTS'

C:\Program Files (x86)\Hiasm\Elements\delphi\code\hiEnCrypt.pas(135) Error: Undeclared identifier: 'MSSetKeyInitVector'

C:\Program Files (x86)\Hiasm\Elements\delphi\code\hiEnCrypt.pas(136) Error: Undeclared identifier: 'CryptSetKeyParam'

C:\Program Files (x86)\Hiasm\Elements\delphi\code\hiEnCrypt.pas(136) Error: Undeclared identifier: 'KP_MODE'

C:\Program Files (x86)\Hiasm\Elements\delphi\code\hiEnCrypt.pas(194) Error: Undeclared identifier: 'MSEncryptString'

C:\Program Files (x86)\Hiasm\Elements\delphi\code\hiEnCrypt.pas(235) Error: Undeclared identifier: 'ERROR_OPEN_SRC_FILE'

C:\Program Files (x86)\Hiasm\Elements\delphi\code\hiEnCrypt.pas(241) Error: Undeclared identifier: 'ERROR_OPEN_DST_FILE'

C:\Program Files (x86)\Hiasm\Elements\delphi\code\hiEnCrypt.pas(257) Error: Undeclared identifier: 'MSEncryptStream'

C:\Program Files (x86)\Hiasm\Elements\delphi\code\hiEnCrypt.pas(257) Error: Not enough actual parameters

C:\Program Files (x86)\Hiasm\Elements\delphi\code\hiEnCrypt.pas(321) Error: Undeclared identifier: 'ERROR_OPEN_SRC_FILE'

C:\Program Files (x86)\Hiasm\Elements\delphi\code\hiEnCrypt.pas(330) Error: Undeclared identifier: 'ERROR_OPEN_DST_FILE'

C:\Program Files (x86)\Hiasm\Elements\delphi\code\hiEnCrypt.pas(335) Error: Undeclared identifier: 'MSEncryptStream'

C:\Program Files (x86)\Hiasm\Elements\delphi\code\hiEnCrypt.pas(335) Error: Not enough actual parameters

C:\Program Files (x86)\Hiasm\Elements\delphi\code\hiEnCrypt.pas(529) Error: Undeclared identifier: 'MSSetKeyInitVector'

C:\Program Files (x86)\Hiasm\Elements\delphi\code\hiMainForm_5247BD0.pas(20) Fatal: Could not compile used unit 'hiEnCrypt.pas'
Сборка завершена.

карма: 1

0
Ответов: 321
Рейтинг: 10
#8: 2018-11-11 21:53:26 ЛС | профиль | цитата
Починил через HiSvn.

Netspirit, помогите пожалуйста разобраться, смотрел и видео истории развития криптографии, и прочел статьи в hiasm wiki.
Но остались вопросы...

Как я понял в PHP встроен некий OPENSSL_PKCS1_PADDING (могу ошибаться).
Опираясь на примеры с habr сделал 2 файла.
Сгенерировал пару ключей на каком-то сайте (нашел в Яндексе) http://travistidwell.com/jsencrypt/demo/
Это ключи как я понял RSA, они бывают 512, 1024 или 2048 бит. Чем длиннее, тем надежнее, тем медлительнее расшифровка.
На сайте генерации ключей есть галочка async. Зачем она нужна ?!
Собственно вопрос по теме - есть ли у нас поддержка этих самых RSA ?! Ткните пожалуйста носом, если есть.

encode.php
<?php
$pub = <<<DATA
-----BEGIN PUBLIC KEY-----
MFwwDQYJKoZIhvcNAQEBBQADSwAwSAJBALqbHeRLCyOdykC5SDLqI49ArYGYG1mq
aH9/GnWjGavZM02fos4lc2w6tCchcUBNtJvGqKwhC5JEnx3RYoSX2ucCAwEAAQ==
-----END PUBLIC KEY-----
DATA;
$data = "Hiasm is my secret love.";
$pk = openssl_get_publickey($pub);
openssl_public_encrypt($data, $encrypted, $pk);
echo chunk_split(base64_encode($encrypted));
?>


decode.php
<?php
$key = <<<DATA
-----BEGIN RSA PRIVATE KEY-----
MIIBPQIBAAJBALqbHeRLCyOdykC5SDLqI49ArYGYG1mqaH9/GnWjGavZM02fos4l
c2w6tCchcUBNtJvGqKwhC5JEnx3RYoSX2ucCAwEAAQJBAKn6O+tFFDt4MtBsNcDz
GDsYDjQbCubNW+yvKbn4PJ0UZoEebwmvH1ouKaUuacJcsiQkKzTHleu4krYGUGO1
mEECIQD0dUhj71vb1rN1pmTOhQOGB9GN1mygcxaIFOWW8znLRwIhAMNqlfLijUs6
rY+h1pJa/3Fh1HTSOCCCCWA0NRFnMANhAiEAwddKGqxPO6goz26s2rHQlHQYr47K
vgPkZu2jDCo7trsCIQC/PSfRsnSkEqCX18GtKPCjfSH10WSsK5YRWAY3KcyLAQIh
AL70wdUu5jMm2ex5cZGkZLRB50yE6rBiHCd5W1WdTFoe
-----END RSA PRIVATE KEY-----
DATA;
$data = "JutBa0GLHzGrlygxwWr66cizw4W4za+DbzZweNM0iloCD7xEP9LclL013lcksJL5XhjW44U+oxpq cX1ZSLhWuA==";
$pk = openssl_get_privatekey($key);
openssl_private_decrypt(base64_decode($data), $out, $pk);
echo $out;
?>

Редактировалось 1 раз(а), последний 2018-11-11 21:53:46
карма: 1

0
Ответов: 4621
Рейтинг: 746
#9: 2018-11-12 13:00:37 ЛС | профиль | цитата
Для генерации пары приватного и публичного ключа используется компонент GenKeyPairs. Представленные тобой PHP ключи по формату не совсем те, которые используются компонентами HiAsm.
На данный момент у нас также не реализовано прямое шифрование/дешифрование публичным/приватным ключом.

Последовательность у нас такая:
- генерируется пара ключей, либо используется ранее сгенерированная
- у клиента с помощью компонента ExportSessionKey и публичного ключа из пары генерируется случайный SessionKey и его зашифрованный вариант ExchangeKey.
- ExchangeKey передаётся серверу - он не может быть расшифрован при перехвате
- сервер расшифровывает полученный ExchangeKey с помощью приватного ключа из пары компонентом ImportSessionKey и получает тот же SessionKey
- теперь у сервера и клиента есть одинаковые SessionKey, переданные безопасным способом. Ими следует в дальнейшем шифровать/расшифровывать данные, например компонентами EnCrypt/DeCrypt, или моими компонентами.

Редактировалось 4 раз(а), последний 2018-11-12 14:39:56
карма: 26

0
Ответов: 321
Рейтинг: 10
#10: 2018-11-13 08:30:08 ЛС | профиль | цитата
Под сервер вы подразумеваете другое приложение или скрипт php ?! Как я смогу на сервере (хостине) расшифровывать ExchangeKey ?!

В чем сложность реализации RSA в Hiasm?! сложность задачи, ненадобность или отсутствие свободного времени ?!
Вот есть информация, библиотека libeay32.dll, готовый юнит libeay32.pas, функции, процедуры.
https://habr.com/post/280302/
https://github.com/ddlencemc/RSA-via-OpenSSL-libeay32/blob/master/libeay32.pas

Я далек от понимания как это реализовать в hiasm, так-что сразу извините, если это совсем не то.
Но я могу выступить в качестве спонсора этого компонента, думаю многим бы пригодился такой компонент.
карма: 1

0
Ответов: 4621
Рейтинг: 746
#11: 2018-11-13 11:51:42 ЛС | профиль | цитата
Master4eG писал(а):
В чем сложность реализации RSA в Hiasm?!
Она реализована - теми компонентами, о которых я тебе сказал. Но реализована она в стиле Windows API, а оно не совпадает с используемым в PHP (в данном случае - отличаются форматы ключей) и отсутствует шифрование/дешифрование произвольных данных.

Master4eG писал(а):
Как я смогу на сервере (хостине) расшифровывать ExchangeKey ?!
Если на сервере у тебя есть приватный ключ из пары, публичный ключ которой использовался для шифрования ExchangeKey - думаю, можешь так, как и показано в том скрипте. Основная проблема - подсунуть программе публичный ключ в формате PHP (или наоборот - получить приватный ключ, сгенерированный программой, в формате для PHP). Насколько я понимаю, это PEM формат. Я могу предоставить такое решение.

Другая проблема возникнет с использованием компонентов EnCrypt\DeCrypt - они выполняют хеширование поданного на них ключа - для расшифровки в PHP нужно будет выяснить эту процедуру и повторить. Решение - использовать мои компоненты для шифрования - /topic/64832. Но надо проверить совпадают ли результаты шифрования компонентами и PHP для одинаковых параметров алгоритма. Я, вроде, проверял, но лучше перепроверить.

Редактировалось 3 раз(а), последний 2018-11-13 12:00:13
карма: 26

0
Ответов: 321
Рейтинг: 10
#12: 2018-11-13 13:56:31 ЛС | профиль | цитата
Не знаю насколько правильно я делал, но вот MCRYPT_3DES с режимом MCRYPT_MODE_CFB. И в приложении не могу раскодировать результат.
https://webformyself.com/shifrovanie-dannyx-na-php/
Возможно нужно вручную указывать длину вектора инициализации или еще что-то. Короче, я сдаюсь, видимо мой уровень это xor.
Netspirit, спасибо за потраченное время, извините На пенсии разберусь Это нужно время, чтобы вникнуть с головой во все, а так... с этой работой... по пару часов в день не хватает для познания сей темы)

<?

$key = "dsfhdjsfhgsdfusfsdfsdfsdf1232343fdgdfgsdfsdfgtySDGUFD";

if($_POST['str']) {
$str = $_POST['str'];

$mc_d = mcrypt_module_open(MCRYPT_3DES,'',MCRYPT_MODE_CFB,'');

$iv_size = mcrypt_enc_get_iv_size($mc_d);

$iv = mcrypt_create_iv($iv_size,MCRYPT_RAND);

mcrypt_generic_init($mc_d,$key,$iv);

$crypt_text = mcrypt_generic($mc_d,$str);

mcrypt_generic_deinit($mc_d);

echo base64_encode($iv.$crypt_text);


$iv_size1 = mcrypt_enc_get_iv_size($mc_d);

$iv1 = substr($iv.$crypt_text,0,$iv_size1);

$crypt_text2 = substr($iv.$crypt_text,$iv_size1);

mcrypt_generic_init($mc_d,$key,$iv1);

$text = mdecrypt_generic($mc_d,$crypt_text2);

mcrypt_generic_deinit($mc_d);

echo "<br />".$text;

mcrypt_module_close($mc_d);



}

?>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html>
<head>
<title></title>
<meta name="" content="">
</head>
<body>

<form method="POST">
<input type="text" name="str">

<input type="submit">
</form>
</body>
</html>
В этом коде был блоуфиш, а изменил на 3дес, потому что видел такое в hiasm) как не странно работает, но в хиасме не декодирует.

Тема закрыта) Теперь xor мой друг)
карма: 1

0
Ответов: 4621
Рейтинг: 746
#13: 2018-11-13 14:31:59 ЛС | профиль | цитата
Master4eG писал(а):
но в хиасме не декодирует
Как я и писал
Netspirit писал(а):
проблема возникнет с использованием компонентов EnCrypt\DeCrypt - они выполняют хеширование поданного на них ключа - для расшифровки в PHP нужно будет выяснить эту процедуру и повторить.

Master4eG писал(а):
Теперь xor мой друг)
Там я давал ссылку на свой набор компонентов, которые смогут работать с PHP (как минимум, алгоритм AES=MCRYPT_RIJNDAEL_128).

Редактировалось 4 раз(а), последний 2018-11-13 14:38:24
карма: 26

0
Ответов: 321
Рейтинг: 10
#14: 2018-11-13 20:24:48 ЛС | профиль | цитата
Netspirit, нет, по моему xor не мой друг)
Вроде получается с вашим AES=MCRYPT_RIJNDAEL_128 подружиться.

Decode on Hiasm (aes / ecb)
Add(MainForm,2953706,21,105)
{
Width=561
Height=333
}
Add(Edit,5653465,196,112)
{
Left=5
Top=5
Width=350
Text="DB94B210C26D4A13599A13A9E52FECD6"
}
Add(Edit,440265,434,91)
{
Left=5
Top=55
Width=350
Text="KEY"
}
Add(Button,312859,140,161)
{
Left=365
Top=5
Caption="hexToStr"
link(onClick,6995826:doConvert,[])
}
Add(AESCipher,14417129,252,301)
{
BlockMode=0
Checksum=0
link(onResult,7024902:doAdd,[])
link(Data,13250558:Text,[])
link(Password,440265:Text,[(265,212)(440,212)])
}
Add(Memo,7024902,385,301)
{
Left=5
Top=80
Width=475
Height=110
}
Add(StreamConvertor,6995826,196,161)
{
Mode=3
Point(Data)
link(onResult,13250558:doText,[])
link(Data,5653465:Text,[])
}
Add(Edit,13250558,252,161)
{
Left=5
Top=30
Width=350
Text=""
}
Add(Button,7920759,182,308)
{
Left=365
Top=30
Caption="Decode"
link(onClick,14417129:doDecrypt,[])
}


Encrypt / Decrypt PHP...
Судя по документации PHP, MCRYPT считается устаревшим и не рекомендована к использованию.
Большинство функций в новых версиях PHP удалены.
Есть альтернатива openSSL.
Самое странное, что как я понял MCRYPT и openSSL ведут себя странно с aes, и у многих они шифруют по разному, то есть первый не понимает второго, и аналогично наоборот.
Вот пример с рабочим и тем и тем:
<?php

$str = 'Content';
if (strlen($str) % 16) {
$str = str_pad($str, strlen($str) + 16 - strlen($str) % 16, "\0");
}

$key = 'KEY';
if (strlen($key) % 16) {
$key = str_pad($key, strlen($key) + 16 - strlen($key) % 16, "\0");
}

$res1 = mcrypt_encrypt(MCRYPT_RIJNDAEL_128, $key, $str, MCRYPT_MODE_ECB);
echo strToHex($res1) . ' | mcrypt_encrypt';

echo "<hr>";
echo strToHex(openssl_decrypt($res1, "aes-128-ecb", $key, OPENSSL_RAW_DATA | OPENSSL_NO_PADDING)) . ' | openssl_decrypt';

echo "<hr>";

$res2 = openssl_encrypt($str, "aes-128-ecb", $key, OPENSSL_RAW_DATA | OPENSSL_NO_PADDING);
echo strToHex($res2) . ' | openssl_encrypt';

echo "<hr>";
echo strToHex(openssl_decrypt($res2, "aes-128-ecb", $key, OPENSSL_RAW_DATA | OPENSSL_NO_PADDING)) . ' | openssl_decrypt';


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);
}

?>

Пока-что удалось закодированный текст в PHP раскодировать в Hiasm, и это прогресс. Спасибо Netspirit.
Правда работает только если убрать галочку checkSum в компоненте, но наверное так надо)

Все, теперь хоть свою криптовалюту создавай или свой WannaCry

Редактировалось 1 раз(а), последний 2018-11-13 20:27:57
карма: 1

0
Ответов: 4621
Рейтинг: 746
#15: 2018-11-14 11:55:23 ЛС | профиль | цитата
Master4eG писал(а):
работает только если убрать галочку checkSum в компоненте, но наверное так надо
Да, так надо: это моя личная примочка исключительно для упрощения использования в HiAsm. Несовместимая с какими-либо стандартами.
Если нужны режимы отличные от ECB - выясни какой InitVector по-умолчанию использует MCrypt, задай его в компоненте и проверь.
"OPENSSL_NO_PADDING" - не знаю что за флаг и почему ты его указывал, но мои компоненты используют Padding, если не отключен. Нужно проверить, совпадают ли мои режимы дополнения с OpenSSL-евскими. Теоретически, у меня могут быть некорректно реализованы.

Редактировалось 3 раз(а), последний 2018-11-14 12:01:25
карма: 26

0
15
Сообщение
...
Прикрепленные файлы
(файлы не залиты)