我在PHP解密這個C#類編碼的字符串(這是here)在PHP解密字符串C#編碼3DES
using System; using System.Security.Cryptography; using System.Text; public static class Encryption { public static string Encrypt(string input, string key) { byte[] inputArray = UTF8Encoding.UTF8.GetBytes(input); TripleDESCryptoServiceProvider tripleDES = new TripleDESCryptoServiceProvider(); tripleDES.Key = UTF8Encoding.UTF8.GetBytes(key); tripleDES.Mode = CipherMode.ECB; tripleDES.Padding = PaddingMode.PKCS7; ICryptoTransform cTransform = tripleDES.CreateEncryptor(); byte[] resultArray = cTransform.TransformFinalBlock(inputArray, 0, inputArray.Length); tripleDES.Clear(); return Convert.ToBase64String(resultArray, 0, resultArray.Length); } public static string Decrypt(string input, string key) { byte[] inputArray = Convert.FromBase64String(input); TripleDESCryptoServiceProvider tripleDES = new TripleDESCryptoServiceProvider(); tripleDES.Key = UTF8Encoding.UTF8.GetBytes(key); tripleDES.Mode = CipherMode.ECB; tripleDES.Padding = PaddingMode.PKCS7; ICryptoTransform cTransform = tripleDES.CreateDecryptor(); byte[] resultArray = cTransform.TransformFinalBlock(inputArray, 0, inputArray.Length); tripleDES.Clear(); return UTF8Encoding.UTF8.GetString(resultArray); } }
我試着在網絡上發現身邊不同的例子,但沒有似乎工作。我認爲第一個問題出現在php mcrypt_generic_init中的$ iv參數中,然後在php函數中缺少填充。 你能幫我轉換在PHP上面的c#解密函數嗎? 謝謝。
如果您想嘗試,不需要'mcrypt',並會使您的代碼更解決方案可移植到沒有它的實例,可以嘗試[phpseclib](http://phpseclib.sourceforge.net/)。這將使用mcrypt函數(如果可用)以及內部實現(如果不可用)。 – DaveRandom
這是有用的:http://sanity-free.com/131/triple_des_between_php_and_csharp.html –
由於C#代碼使用CipherMode.ECB(這是不好的IMO),** IV **應該不重要。 – poupou