原代码是C#的,现在需要用PHP的方法解开,请高手们帮帮忙。
下面代码中的key = LY870513
加密后的内容是 j45Rrzxm0jD62U1w798yBg==
public static string DecryptString(string strText)
{
byte[] rgbKey = null;
byte[] rgbIV = new byte[] { 0x12, 0x34, 0x56, 120, 0x90, 0xab, 0xcd, 0xef };
byte[] buffer = new byte[strText.Length];
try
{
rgbKey = Encoding.UTF8.GetBytes(key);
DESCryptoServiceProvider provider = new DESCryptoServiceProvider();
buffer = Convert.FromBase64String(strText);
MemoryStream stream = new MemoryStream();
CryptoStream stream2 = new CryptoStream(stream, provider.CreateDecryptor(rgbKey, rgbIV), CryptoStreamMode.Write);
stream2.Write(buffer, 0, buffer.Length);
stream2.FlushFinalBlock();
Encoding encoding = new UTF8Encoding();
return encoding.GetString(stream.ToArray());
}
catch (Exception exception)
{
return ("error:" + exception.Message + "\r");
}
}
用PHP的方法解DES加密
答案:2 悬赏:70 手机版
解决时间 2021-12-28 11:40
- 提问者网友:相思似海深
- 2021-12-27 23:25
最佳答案
- 五星知识达人网友:胯下狙击手
- 2022-01-22 07:03
$key ='LY870513';
$ctext = 'j45Rrzxm0jD62U1w798yBg==';
$ptext = mcrypt_decrypt ( MCRYPT_DES, $key , base64_decode($ctext), MCRYPT_MODE_CBC, "\x12\x34\x56\120\x90\xab\xcd\xef");
//echo iconv('UTF-8','GBK',$ptext); //GBK环境使用,UTF8环境多余不用
echo $ptext; //UTF8环境用20219241337由于不清楚原代码的块链接模式,暂时用的CBC,对于短数据可解出。
$ctext = 'j45Rrzxm0jD62U1w798yBg==';
$ptext = mcrypt_decrypt ( MCRYPT_DES, $key , base64_decode($ctext), MCRYPT_MODE_CBC, "\x12\x34\x56\120\x90\xab\xcd\xef");
//echo iconv('UTF-8','GBK',$ptext); //GBK环境使用,UTF8环境多余不用
echo $ptext; //UTF8环境用20219241337由于不清楚原代码的块链接模式,暂时用的CBC,对于短数据可解出。
全部回答
- 1楼网友:行路难
- 2022-01-22 07:24
des是一种标准的数据加密算法,关于这个算法的详细介绍可以参考wiki和百度百科:
php中有一个扩展可以支持des的加密算法,是:extension=php_mcrypt.dll
在配置文件中将这个扩展打开还不能够在windows环境下使用
需要将php文件夹下的 libmcrypt.dll 拷贝到系统的 system32 目录下,这是通过phpinfo可以查看到mcrypt表示这个模块可以正常试用了。
下面是php中使用des加密解密的一个例子:
//$input - stuff to decrypt
//$key - the secret key to use
function do_mencrypt($input, $key)
{
$input = str_replace(""n", "", $input);
$input = str_replace(""t", "", $input);
$input = str_replace(""r", "", $input);
$key = substr(md5($key), 0, 24);
$td = mcrypt_module_open('tripledes', '', 'ecb', '');
$iv = mcrypt_create_iv(mcrypt_enc_get_iv_size($td), mcrypt_rand);
mcrypt_generic_init($td, $key, $iv);
$encrypted_data = mcrypt_generic($td, $input);
mcrypt_generic_deinit($td);
mcrypt_module_close($td);
return trim(chop(base64_encode($encrypted_data)));
}
//$input - stuff to decrypt
//$key - the secret key to use
function do_mdecrypt($input, $key)
{
$input = str_replace(""n", "", $input);
$input = str_replace(""t", "", $input);
$input = str_replace(""r", "", $input);
$input = trim(chop(base64_decode($input)));
$td = mcrypt_module_open('tripledes', '', 'ecb', '');
$key = substr(md5($key), 0, 24);
$iv = mcrypt_create_iv(mcrypt_enc_get_iv_size($td), mcrypt_rand);
mcrypt_generic_init($td, $key, $iv);
$decrypted_data = mdecrypt_generic($td, $input);
mcrypt_generic_deinit($td);
mcrypt_module_close($td);
return trim(chop($decrypted_data));
}
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯