問題描述
我一直在嘗試在服務器端、PHP 和客戶端上實現 mcrypt 加密/解密技術.我正在嘗試使用 mcrypt.js
庫作為:
I have been trying to implement mcrypt encryption/ decryption technique on both server end, PHP and client end. I am trying to use mcrypt.js
library at the moment as:
<?php
$key = 'testtesttesttesttesttesttesttest';
function string_encrypt($string, $key) {
$crypted_text = mcrypt_encrypt(
MCRYPT_RIJNDAEL_128,
$key,
$string,
MCRYPT_MODE_ECB
);
return base64_encode($crypted_text);
}
function string_decrypt($encrypted_string, $key) {
$decrypted_text = mcrypt_decrypt(
MCRYPT_RIJNDAEL_128,
$key,
base64_decode($encrypted_string),
MCRYPT_MODE_ECB
);
return trim($decrypted_text);
}
echo 'Provided Text: '.$test_str = 'This is test message.';
echo '<br />';
echo 'Encyrpted Value: '.$enc_str = string_encrypt($test_str, $key);
echo '<br />';
echo 'Decrypted Value: '.string_decrypt($enc_str, $key);
echo '<br />';
?>
<script src='rijndael.js'></script>
<script src='mcrypt.js'></script>
<script src='base64v1_0.js'></script>
<script lang='javascript'>
var enc_str = mcrypt.Encrypt('<?php echo $test_str ?>','');
enc_str = B64.encode(enc_str);
alert(enc_str);
// I don't get this same as encypted PHP text. i.e. $enc_str
var dec_str = B64.decode('<?php echo $enc_str ?>');
alert(mcrypt.Decrypt(dec_str,''));
// I don't get this same as decypted PHP text.
// i.e. string_decrypt($enc_str)
</script>
我在 mcrypt.js 庫中使用了以下這些私有變量.
I have used these following private vars at the mcrypt.js library.
var cMode='ecb';
var cCipher='rijndael-256';
var cKey='testtesttesttesttesttesttesttest';
//I am providing the same key
正如我上面評論的,為什么 enc_str
不等于 $enc_str
以及為什么它是 mcrypt.Decrypt('<?php echo $enc_str?>', '')
不等于 string_decrypt($enc_str, $key)
?
As I commented above, why is it enc_str
not equal as $enc_str
and why is it mcrypt.Decrypt('<?php echo $enc_str ?>', '')
not equal as string_decrypt($enc_str, $key)
?
更新的問題:
我嘗試了 base64 編碼/解碼甚至 hex2bin/bin2hex 來解析這些字符串,但這兩個產生了以下結果:
I tried both base64 encode/ decode and even hex2bin/ bin2hex to parse those strings but these two produced following results:
使用 Hex2bin/Bin2hex
PHP 結果:
Provided Text: This is test message.
Encyrpted Value: a51e970427ec8f666a5684cc1712ad03b29889cc10f4ccbf55733564d11c0386
Decrypted Value: This is test message.
JS 結果:
Provided Text:This is test message.
Mcrypted value:¥'ìfjVì-2ì?ì?Us5d?
Encyrpted Value:a51e970427ec8f666a5684cc1712ad03b29889cc10f4ccbf55733564d11c0386
After Hex to Bin Text:¥'ìfjVì-2ì?ì?Us5d?
Decrypted Value:This is test message.???????????
/*These diamond with question mark is produced while decypting the value.*/
<小時>
使用 Base64 編碼/解碼:
PHP 結果:
Provided Text: This is test message.
Mcrypt encrypted value : ¥—'ìfjV?ì-2?‰ì?ì?Us5d??
/*
Here mcrypted value provided by JS and PHP is different
That is causing to produce different value at two ends
*/
Encyrpted Value: pR6XBCfsj2ZqVoTMFxKtA7KYicwQ9My/VXM1ZNEcA4Y=
Decrypted Value: This is test message.
JS 結果:
Provided Text:This is test message.
Mcrypted value:¥'ìfjVì-2ì?ì?Us5d?
Encyrpted Value:wqUewpcEJ8Oswo9malbChMOMFxLCrQPCssKYwonDjBDDtMOMwr9VczVkw5EcA8KG
After Base64 Decode:¥'ìfjVì-2ì?ì?Us5d????
Decrypted Value:This is test message.???????????bFaêF?+Jéó!??
并且在這兩種情況下,UTf-8 內容都無法在 JS 端解密.
And on both cases, UTf-8 content can not be decrypted on JS end.
*鏈接:*
Mcrypt JS 庫
Base64 JS 庫
推薦答案
主要問題似乎是您的 string_encrypt
和 string_decrypt
PHP 函數無法訪問$key
變量,因此對于加密密鑰 mcrypt_encrypt
使用
主站蜘蛛池模板:
国产色婷婷精品综合在线播放
|
99精品视频在线
|
91在线视频免费观看
|
中文字幕视频在线
|
精品美女在线观看视频在线观看
|
99久久日韩精品免费热麻豆美女
|
一区视频|
欧美一区2区三区3区公司
|
九九热在线免费观看
|
日本精品一区二区
|
啪一啪
|
精品久久久久久久久久久
|
免费观看一级毛片
|
久久久久国产精品
|
久久国产免费看
|
国产色在线
|
性欧美xxxx
|
丁香久久
|
欧美日韩黄|
亚洲欧美中文日韩在线v日本
|
国产欧美一区二区三区在线看蜜臀
|
国产欧美一区二区三区另类精品
|
国产精品伦一区二区三级视频
|
国产福利视频导航
|
国内毛片毛片毛片毛片
|
日韩视频一区二区在线
|
国产综合一区二区
|
中文字幕亚洲视频
|
亚洲视频免费
|
日本一区二区三区四区
|
国产99免费|
欲色av
|
欧美一级精品片在线看
|
日本在线视频中文字幕
|
一区二区视频
|
青春草在线
|
一区二区日韩精品
|
国产精品久久久久久久久久久久久
|
不卡在线视频
|
成人午夜视频在线观看
|
成年网站在线观看
|