请问一下哪位仁兄,谁用过tdes加密的... 弱弱地问一句,tdes對稱式加密函數TrippleDES,是不是跟PHP扩展mcrypt_encrypt加密一样的? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 试了,就是不一样哦...PHP版 class CookieCrypt { var $key; function CookieCrypt($key) { $this->key = $key; } function encrypt($input) { $size = mcrypt_get_block_size('des','ecb'); $input = $this->pkcs5_pad($input, $size); $key = $this->key; $td = mcrypt_module_open('des', '', 'ecb', ''); $iv = @mcrypt_create_iv (mcrypt_enc_get_iv_size($td), MCRYPT_RAND); @mcrypt_generic_init($td, $key, $iv); $data = mcrypt_generic($td, $input); mcrypt_generic_deinit($td); mcrypt_module_close($td); $data = base64_encode($data); return $data; } function decrypt($encrypted) { $encrypted = base64_decode($encrypted); $key =$this->key; $td = mcrypt_module_open('des','','ecb',''); //使用MCRYPT_DES算法,cbc模式 $iv = @mcrypt_create_iv(mcrypt_enc_get_iv_size($td), MCRYPT_RAND); $ks = mcrypt_enc_get_key_size($td); @mcrypt_generic_init($td, $key, $iv); //初始处理 $decrypted = mdecrypt_generic($td, $encrypted); //解密 mcrypt_generic_deinit($td); //结束 mcrypt_module_close($td); $y=$this->pkcs5_unpad($decrypted); return $y; } function pkcs5_pad ($text, $blocksize) { $pad = $blocksize - (strlen($text) % $blocksize); return $text . str_repeat(chr($pad), $pad); } function pkcs5_unpad($text) { $pad = ord($text{strlen($text)-1}); if ($pad > strlen($text)) { return false; } if (strspn($text, chr($pad), strlen($text) - $pad) != $pad) { return false; } return substr($text, 0, -1 * $pad); } } $key = "123456781234567812345678"; $input = sha1("test"); $crypt = new CookieCrypt($key); echo "Encode:".$crypt->encrypt($input)."<br/>"; echo "Encode:".strlen($crypt->encrypt($input))."<br/>"; echo "Decode:".$crypt->decrypt($crypt->encrypt($input));?>asp com版 regsvr32 元件所在路徑\Security.dll 2. 應用壓碼函式 Fcb_Mac( data, key) MAC產生 ASP應用範例: <%@ Language=JavaScript%> <% var obj=Server.CreateObject ("Security.UseSecurity.1"); data="test"; key="123456781234567812345678"; mac=obj.Fcb_Mac(data,key); Response.Write(mac); %>正确测试结果Base64(TDES(KEY,SHA-1(押碼資料)))押碼資料:test押碼Key:123456781234567812345678 經SHA-1押碼後為:A94A8FE5CCB19BA61C4C0873D391E987982FBBD300000000 經TDES押碼後為:FDDADB7E2DD648E3AF3816FB5EF0696C7C887F1ED1BCADBA 經Base64押碼後為:/drbfi3WSOOvOBb7XvBpbHyIfx7RvK26大家帮我分析一下 上传后php数据库连接 无限维列表结构如何生成! WordPress建站,如何让浏览器地址栏显示图标? 我写了个注册类 大家看看有什么不好的地方啊. thinkphp里的CacheApc的用法是什么 空间上传的php网页不能打开 MVC框架的问题 散分!国庆快乐,中秋快乐! phpcms phpsso通信成功 注册失败 求教基于thinkphp源码授权的思路 PHP项目分工协作问题? 急聘PHP技术岗位
PHP版
class CookieCrypt
{
var $key;
function CookieCrypt($key)
{
$this->key = $key;
}
function encrypt($input)
{
$size = mcrypt_get_block_size('des','ecb');
$input = $this->pkcs5_pad($input, $size);
$key = $this->key;
$td = mcrypt_module_open('des', '', 'ecb', '');
$iv = @mcrypt_create_iv (mcrypt_enc_get_iv_size($td), MCRYPT_RAND);
@mcrypt_generic_init($td, $key, $iv);
$data = mcrypt_generic($td, $input);
mcrypt_generic_deinit($td);
mcrypt_module_close($td);
$data = base64_encode($data);
return $data;
}
function decrypt($encrypted)
{
$encrypted = base64_decode($encrypted);
$key =$this->key;
$td = mcrypt_module_open('des','','ecb','');
//使用MCRYPT_DES算法,cbc模式
$iv = @mcrypt_create_iv(mcrypt_enc_get_iv_size($td), MCRYPT_RAND);
$ks = mcrypt_enc_get_key_size($td);
@mcrypt_generic_init($td, $key, $iv);
//初始处理
$decrypted = mdecrypt_generic($td, $encrypted);
//解密
mcrypt_generic_deinit($td);
//结束
mcrypt_module_close($td);
$y=$this->pkcs5_unpad($decrypted);
return $y;
}
function pkcs5_pad ($text, $blocksize)
{
$pad = $blocksize - (strlen($text) % $blocksize);
return $text . str_repeat(chr($pad), $pad);
}
function pkcs5_unpad($text)
{
$pad = ord($text{strlen($text)-1});
if ($pad > strlen($text))
{
return false;
}
if (strspn($text, chr($pad), strlen($text) - $pad) != $pad)
{
return false;
}
return substr($text, 0, -1 * $pad);
}
}
$key = "123456781234567812345678";
$input = sha1("test");
$crypt = new CookieCrypt($key);
echo "Encode:".$crypt->encrypt($input)."<br/>";
echo "Encode:".strlen($crypt->encrypt($input))."<br/>";
echo "Decode:".$crypt->decrypt($crypt->encrypt($input));
?>
asp com版 regsvr32 元件所在路徑\Security.dll
2. 應用壓碼函式 Fcb_Mac( data, key)
MAC產生 ASP應用範例:
<%@ Language=JavaScript%>
<%
var obj=Server.CreateObject ("Security.UseSecurity.1");
data="test";
key="123456781234567812345678";
mac=obj.Fcb_Mac(data,key);
Response.Write(mac);
%>正确测试结果Base64(TDES(KEY,SHA-1(押碼資料)))
押碼資料:test
押碼Key:123456781234567812345678
經SHA-1押碼後為:A94A8FE5CCB19BA61C4C0873D391E987982FBBD300000000
經TDES押碼後為:FDDADB7E2DD648E3AF3816FB5EF0696C7C887F1ED1BCADBA
經Base64押碼後為:/drbfi3WSOOvOBb7XvBpbHyIfx7RvK26大家帮我分析一下