[請益] C#的DES3 怎麼轉成php
我有一個用C#寫的des3的加密
public string EncryptString(string Value)
{
ICryptoTransform ct;
MemoryStream ms;
CryptoStream cs;
byte[] byt;
byte[] bIV = Convert.FromBase64String( "dieD5ksoWf3=");
mCSP.Key = bKey;
mCSP.IV = bIV;
mCSP.Mode = System.Security.Cryptography.CipherMode.ECB;
mCSP.Padding = System.Security.Cryptography.PaddingMode.PKCS7;
ct = mCSP.CreateEncryptor(mCSP.Key, mCSP.IV);
byt = Encoding.UTF8.GetBytes(Value);
ms = new MemoryStream();
cs = new CryptoStream(ms, ct, CryptoStreamMode.Write);
cs.Write(byt, 0, byt.Length);
cs.FlushFinalBlock();
cs.Close();
return Convert.ToBase64String(ms.ToArray());
}
其中的bKey 是由 System.Security.Cryptography.MD5.Create().ComputeHash(
System.Text.Encoding.UTF8.GetBytes(data)
);
產生出來的md5
下面是我的php 加密
function encrypt($crypt) {
$iv = "dieD5ksoWf3=";
$td = mcrypt_module_open(MCRYPT_TRIPLEDES,'',MCRYPT_MODE_ECB,'');
$iv = base64_decode($iv);
$key = $this->key;
mcrypt_generic_init($td,$key,$iv);
$ret = (($crypt));
$ret = mcrypt_generic($td,$ret);
mcrypt_generic_deinit($td);
mcrypt_module_close($td);
//開始加密
$encrypted_string = mcrypt_encrypt(MCRYPT_TRIPLEDES, $key, $ret,
MCRYPT_MODE_ECB, $iv);
//開始64位編碼
$ret=base64_encode($encrypted_string);
return $ret;
}
可是 兩個得到的結果都不一樣,請問php該怎麼改才能讓結果跟C#一樣
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 210.242.249.18
→
07/12 19:54, , 1F
07/12 19:54, 1F
→
07/12 20:04, , 2F
07/12 20:04, 2F
推
07/22 15:26, , 3F
07/22 15:26, 3F
PHP 近期熱門文章
PTT數位生活區 即時熱門文章