PHP(PHP 5)完成一个3DES加密的算法

levi_dream 2005-12-13 03:05:23
想用PHP(PHP 5)完成一个3DES加密的算法,PHP代码是这样的
///php code
<?php
function fmt3DESEx($s){
$key = pack('H48',"9F8C243AEE347183B39DD81B20941E86BC11529B034C8842");
$td = mcrypt_module_open(MCRYPT_3DES, '', MCRYPT_MODE_CBC, '');
$iv = pack('H10',"0102030405060708"); //like c# new byte[]{1,2,3,4,5,6,7,8}
mcrypt_generic_init($td, $key, $iv);
$encrypted_data = mcrypt_generic($td, $s);
mcrypt_generic_deinit($td);
mcrypt_module_close($td);
return $encrypted_data;
}
$S = "123456";
echo(BASE64_Encode(fmt3DESEx(sha1($S, true))));
?>
正常的话,得到的结果应该是
xUL2ewBUn7mqNdrgbTzoZyfUjOMZw6r2
但现在,实际年得到的结果是
xUL2ewBUn7mqNdrgbTzoZ+vkYhgNnLbQ
^^^^^^^^^^^ difference
使用C#写了一下,得到的结果是对的,对比一下,可能问题在填充这块,因为C#里有这么一句
mCSP.Padding = System.Security.Cryptography.PaddingMode.PKCS7
而PHP里没有办法设置
以下是C#的代码
//********************C# code ******************
private string fmt3DES(byte[] Value){
byte[] bytKey = new byte[]{0x9F,0x8C,0x24,0x3A,0xEE,0x34,0x71,0x83,0xB3,0x9D,0xD8,0x1B,0x20,0x94,0x1E,0x86,0xBC,0x11,0x52,0x9B,0x03,0x4C,0x88,0x42};
ICryptoTransform ct;
MemoryStream ms;
CryptoStream cs;

SymmetricAlgorithm mCSP = new TripleDESCryptoServiceProvider();
mCSP.IV = new byte[]{1,2,3,4,5,6,7,8};//Convert.FromBase64String("12345678");//
mCSP.Key = bytKey;
mCSP.Mode = System.Security.Cryptography.CipherMode.CBC;
mCSP.Padding = System.Security.Cryptography.PaddingMode.PKCS7;

ct = mCSP.CreateEncryptor(mCSP.Key, mCSP.IV);
ms = new MemoryStream();
cs = new CryptoStream(ms, ct, CryptoStreamMode.Write);
cs.Write(Value, 0, Value.Length);
cs.FlushFinalBlock();
cs.Close();
return Convert.ToBase64String(ms.ToArray());
}

private void btnTest_Click(object sender, System.EventArgs e) {
string s;
Byte[] clearBytes = Encoding.UTF8.GetBytes(txtSrc.Text);
Byte[] hashedBytes = ((HashAlgorithm)CryptoConfig.CreateFromName("SHA1")).ComputeHash(clearBytes);
s = Convert.ToBase64String(hashedBytes);
txt2.Text = fmt3DES(hashedBytes);
}
...全文
189 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
Cain 2006-01-13
  • 打赏
  • 举报
回复
关注。
sandyuk 2006-01-13
  • 打赏
  • 举报
回复
关注。
gu1dai 2005-12-14
  • 打赏
  • 举报
回复
关注。

21,891

社区成员

发帖
与我相关
我的任务
社区描述
从PHP安装配置,PHP入门,PHP基础到PHP应用
社区管理员
  • 基础编程社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧