Вроде получается с вашим 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