脚本宝典收集整理的这篇文章主要介绍了三重加密在PHP和C#中没有产生相同的结果,脚本宝典觉得挺不错的,现在分享给大家,也给大家做个参考。
static void Main(string[] args) { Encoding byteEncoder = Encoding.Default; String key = "ShHhd8a08JhJiho98ayslcjh"; String message = "Let us meet at 9 o'clock at the secret place."; String encryption = Encrypt(message,key,false); String decryption = Decrypt(encryption,false); Console.WriteLine("Message: {0}",message); Console.WriteLine("Encryption: {0}",encryption); Console.WriteLine("Decryption: {0}",decryption); } public static string Encrypt(string toEncrypt,string key,bool usehashing) { byte[] keyArray; byte[] toEncryptArray = UTF8Encoding.UTF8.GetBytes(toEncrypt); if (useHashing) { MD5CryptoServicePRovider hashmd5 = new MD5CryptoServiceProvider(); keyArray = hashmd5.COMputeHash(UTF8Encoding.UTF8.GetBytes(key)); } else keyArray = UTF8Encoding.UTF8.GetBytes(key); TripleDESCryptoServiceProvider tdes = new TripleDESCryptoServiceProvider(); tdes.Key = keyArray; tdes.Mode = CipherMode.ECB; tdes.Padding = PaddingMode.PKCS7; ICryptoTransform cTransform = tdes.CreateEncryptor(); byte[] resultArray = cTransform.TransformFinalBlock(toEncryptArray,toEncryptArray.Length); return Convert.ToBase64String(resultArray,resultArray.Length); } public static string Decrypt(string toDecrypt,bool useHashing) { byte[] keyArray; byte[] toEncryptArray = Convert.FromBase64String(toDecrypt); if (useHashing) { MD5CryptoServiceProvider hashmd5 = new MD5CryptoServiceProvider(); keyArray = hashmd5.ComputeHash(UTF8Encoding.UTF8.GetBytes(key)); } else keyArray = UTF8Encoding.UTF8.GetBytes(key); TripleDESCryptoServiceProvider tdes = new TripleDESCryptoServiceProvider(); tdes.Key = keyArray; tdes.Mode = CipherMode.ECB; tdes.Padding = PaddingMode.PKCS7; ICryptoTransform cTransform = tdes.CreateDecryptor(); byte[] resultArray = cTransform.TransformFinalBlock(toEncryptArray,toEncryptArray.Length); return UTF8Encoding.UTF8.GetString(resultArray); }
当我用PHP加密时,我得到:arTdPqWOg6VppOqUD6mGITjb24 x5vJjfAufNQ4DN7rVEtpDmhFnMVM W / WFlksR
<?PHP $key = "ShHhd8a08JhJiho98ayslcjh"; $input = "Let us meet at 9 o'clock at the secret place."; $td = mcrypt_module_oPEn('tripledes','','ecb',''); $iv = mcrypt_create_iv (mcrypt_enc_get_iv_size($td),MCRYPT_RAND); mcrypt_generic_init($td,$key,$iv); $encrypted_data = mcrypt_generic($td,$input); mcrypt_generic_deinit($td); mcrypt_module_close($td); echo base64_encode($encrypted_data); ?>
我对密码学知之甚少,无法弄清楚原因.有任何想法吗?谢谢.
function pkcs7_pad($text,$blocksize) { $pad = $blocksize - (strlen($text) % $blocksize); return $text . str_repeat(chr($pad),$pad); } $input = pkcs7_pad("Let us meet at 9 o'clock at the secret place.",16);
tdes.Padding = PaddingMode.Zeros;
并且它也有效(虽然稍微不那么安全).
以上是脚本宝典为你收集整理的三重加密在PHP和C#中没有产生相同的结果全部内容,希望文章能够帮你解决三重加密在PHP和C#中没有产生相同的结果所遇到的问题。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。