看板 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
liaosankai:http://goo.gl/PfWm4 對岸同胞的碼或許能參考 07/12 19:54
knives:這個我參考過了,已經google好多個了 07/12 20:04
popmentos:http://goo.gl/0nUy9 這篇說先用 UrlEncode 再轉 base64 07/22 15:26