久久久久久久av_日韩在线中文_看一级毛片视频_日本精品二区_成人深夜福利视频_武道仙尊动漫在线观看

Node.js 中的 AES 加密 PHP 中的解密.失敗.

AES encrypt in Node.js Decrypt in PHP. Fail. (Node.js 中的 AES 加密 PHP 中的解密.失敗.)
本文介紹了Node.js 中的 AES 加密 PHP 中的解密.失敗.的處理方法,對大家解決問題具有一定的參考價值,需要的朋友們下面隨著小編來一起學習吧!

問題描述

在 node.js 中,我使用內置函數來加密數據:

In node.js, I use the build in function to encrypt data like that:

var text = "Yes";
var password = "123456";
var encrypt = crypto.createCipher('aes-256-cbc', password);
var encryptOutput1 = encrypt.update(text, 'base64', 'base64');
var encryptOutput2 = encrypt.final('base64');
var encryptedText = encryptOutput1 + encryptOutput2;

輸出(加密文本)為:OnNINwXf6U8XmlgKJj48iA==

the output (encrypted text) is: OnNINwXf6U8XmlgKJj48iA==

然后我在 PHP 中使用解密:

Then I use decrypt it in PHP:

$encrypted = 'OnNINwXf6U8XmlgKJj48iA==';
(or $encrypted = base64_decode('OnNINwXf6U8XmlgKJj48iA==')  );
$dtext2 = mcrypt_decrypt(MCRYPT_RIJNDAEL_256, $key, $encrypted, MCRYPT_MODE_CBC);
echo "Decrypted: $dtext2";

我會得到一些我無法解密的有趣字符.我嘗試使用/不使用 base64_decode 或 MCRYPT_RIJNDAEL_128 .. 都失敗了.

I will get some funny characters, which I can't decrypted it. I tried with/without base64_decode or MCRYPT_RIJNDAEL_128.. all fail.

然后我檢查了PHP中的加密方式,它看起來與node.js的輸出非常不同.

Then I check how the encryption in PHP, it looks very different from the output from node.js.

$text = "Yes";
    $key = "123456"; 


    $eText = mcrypt_encrypt(MCRYPT_RIJNDAEL_256, $key, $text, MCRYPT_MODE_CBC);
    echo "Encrypted: $eText 
";
    echo "base64: " . base64_encode($eText) . " 
";

    $dtext1 = mcrypt_decrypt(MCRYPT_RIJNDAEL_256, $key, $eText, MCRYPT_MODE_CBC);
    echo "Decrypted: $dtext1 

";

它可以加密和解密.加密數據為:njCE/fk3pLD1/JfiQuyVa6w5H+Qb/utBIT3m7LAcetM=

It can encrypt and decrypt. and the encrypted data is : njCE/fk3pLD1/JfiQuyVa6w5H+Qb/utBIT3m7LAcetM=

這與 node.js 的輸出非常不同,請告知我如何在 node.js & 之間進行加密和解密.php.ini謝謝.:)

which is very different from the output from node.js please advise how I can encrypt and decrypt between node.js & php. thanks. :)

@Mel 這是我在 PHP 中所擁有的:

@Mel here is what I have in PHP:

$text = "Yes";

$key = "32BytesLongKey560123456789ABCDEF"; 
$iv =  "sixteenbyteslong";

/* Open the cipher */
$td = mcrypt_module_open(MCRYPT_RIJNDAEL_128, '', MCRYPT_MODE_CBC, '');

/* Intialize encryption */
mcrypt_generic_init($td, $key, $iv);

/* Encrypt data */
$eText = mcrypt_generic($td, $text);

echo "Encrypted Data: $eText 
";
echo "base64: " . base64_encode($eText) . " 
";

/* Terminate encryption handler */
mcrypt_generic_deinit($td);

/* Initialize encryption module for decryption */
mcrypt_generic_init($td, $key, $iv);

/* Decrypt encrypted string */
$dText = mdecrypt_generic($td, $eText);

/* Terminate decryption handle and close module */
mcrypt_generic_deinit($td);
mcrypt_module_close($td);

/* Show string */
echo trim($dText) . "
";

然而,它仍然不起作用.

However, it still doesn't work.

PHP 中加密的 base 64 為:80022AGM4/4qQtiGU5oJDQ==nodejs中加密的base 64為:EoYRm5SCK7EPe847CwkffQ==

The encrypted base 64 in PHP is: 80022AGM4/4qQtiGU5oJDQ== The encrypted base 64 in nodejs is: EoYRm5SCK7EPe847CwkffQ==

因此,我無法在 PHP 中解密 nodejs 之一.

thus, i can't decrypt the nodejs one in PHP.

不知道是不是因為nodejs不需要$iv?

I wonder if it is because nodejs doesn't require $iv?

推薦答案

晚了七個月,但我也在為此苦苦掙扎,并找到了解決方案.顯然,PHP 用零字節填充輸入以使其大小成為塊大小的倍數.例如,使用 AES-128,14 字節輸入contrabassists"將填充兩個零字節,如下所示:

Seven months late, but I was struggling with this as well, and found a solution. Apparently, PHP pads the input with zero bytes to make its size a multiple of the block size. For example, using AES-128, the 14 byte input "contrabassists" will be padded with two zero bytes, like this:

"contrabassists

主站蜘蛛池模板:
久久久久久国产精品
|
a级毛片基地
|
国产午夜精品一区二区三区在线观看
|
97国产在线观看
|
久久精品国产亚洲
|
亚洲精品www久久久久久广东
|
国产一级毛片视频
|
偷拍自拍在线观看
|
久久在线看
|
一级全黄视频
|
天天玩天天操天天干
|
国产美女精品视频
|
欧美一级特黄aaa大片在线观看
|
一区二区三区精品在线视频
|
国产精品久久久久久久久久三级
|
h小视频|
日韩成人av在线
|
天天操天天摸天天干
|
久久精品久久久
|
激情免费视频
|
中文字幕综合
|
一区二区三区四区国产
|
国产午夜精品一区二区三区嫩草
|
亚洲欧美在线视频
|
国产精品亚洲精品久久
|
日本高清中文字幕
|
一区二区欧美在线
|
日韩中文在线观看
|
久久久久国产一区二区
|
日韩一区中文字幕
|
青青草一区
|
超碰男人天堂
|
亚洲精品乱码久久久久v最新版
|
国精日本亚洲欧州国产中文久久
|
国产一区二区三区四区三区四
|
亚洲精品福利视频
|
国产一区二
|
97色伦网
|
www.se91|
精品欧美一区二区三区
|
黄色网址在线免费观看
|