[請益] C#的DES3 怎麼轉成php

看板PHP作者時間13年前 (2012/07/12 18:04), 編輯推噓1(102)
留言3則, 3人參與, 最新討論串1/1
我有一個用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
http://goo.gl/PfWm4 對岸同胞的碼或許能參考
07/12 19:54, 1F

07/12 20:04, , 2F
這個我參考過了,已經google好多個了
07/12 20:04, 2F

07/22 15:26, , 3F
http://goo.gl/0nUy9 這篇說先用 UrlEncode 再轉 base64
07/22 15:26, 3F
文章代碼(AID): #1F_g57UK (PHP)
文章代碼(AID): #1F_g57UK (PHP)