note 52833 added to function.mcrypt-encrypt

From: Date: Sat, 14 May 2005 03:23:46 +0000
Subject: note 52833 added to function.mcrypt-encrypt
Groups: php.notes 
Request: Send a blank email to php-notes+get-89403@lists.php.net to get a copy of this message
Here's a complete example that works for encrypting some plain ascii text in .NET and decrypting it in PHP. I use base64 encoding to transport the encrypted data since it uses a fairly standard set of characters. Make your own custom IV value if you want. If you're testing out mcrypt on Windows, be sure to get the libmcrypt.dll file mentioned at the top of http://www.php.net/mcrypt - it doesn't come with the PHP zip file. //C# code using System.Security.Cryptography; using System.Text; ... public static string TripleDESEncrypt(string Plaintext, string Key) { TripleDESCryptoServiceProvider DES = new TripleDESCryptoServiceProvider(); MD5CryptoServiceProvider hashMD5 = new MD5CryptoServiceProvider(); DES.Key = hashMD5.ComputeHash(ASCIIEncoding.ASCII.GetBytes(Key)); DES.Mode = CipherMode.CBC; DES.IV = Convert.FromBase64String("32h4k1Ysu+A="); DES.Padding=PaddingMode.Zeros; ICryptoTransform DESEncrypt = DES.CreateEncryptor(DES.Key,DES.IV); byte[] Buffer = ASCIIEncoding.ASCII.GetBytes(Plaintext); byte[] result = DESEncrypt.TransformFinalBlock(Buffer, 0, Buffer.Length); return Convert.ToBase64String(result); } <?php //PHP function function TripleDesDecrypt($base64encoded, $key) { $encryptedbinary = base64_decode($base64encoded); $md5key = md5($key); //extend it to 192 bits to match .NET (see comment below) $md5key .= substr($md5key,0,16); $binarykey = pack('H*',$md5key); $iv = base64_decode("32h4k1Ysu+A="); return rtrim(mcrypt_decrypt(MCRYPT_TRIPLEDES, $binarykey, $encryptedbinary, MCRYPT_MODE_CBC, $iv)); } ?> To use it, say in an ASP.NET application, do something like this... //C# ... string sensitive = "Important info!"; string key = "topsecret555"; string redirecturl = "decrypt.php?encryptedvalue=" + Server.UrlEncode(TripleDESEncrypt(sensitive, key)); Response.Redirect(redirecturl); ... Then, in PHP, <?php $encrypted = urldecode($_GET["encryptedvalue"]); $key = "topsecret555"; $decrypted = TripleDesDecrypt($encrypted, $key); echo $decrypted; ... ?> ---- Manual Page -- http://www.php.net/manual/en/function.mcrypt-encrypt.php Edit -- http://master.php.net/manage/user-notes.php?action=edit+52833 Delete: added to the manual -- http://master.php.net/manage/user-notes.php?action=delete+52833&report=yes&reason=added+to+the+manual Delete: bad code -- http://master.php.net/manage/user-notes.php?action=delete+52833&report=yes&reason=bad+code Delete: spam -- http://master.php.net/manage/user-notes.php?action=delete+52833&report=yes&reason=spam Delete: useless -- http://master.php.net/manage/user-notes.php?action=delete+52833&report=yes&reason=useless Delete: other reasons -- http://master.php.net/manage/user-notes.php?action=delete+52833&report=yes Reject -- http://master.php.net/manage/user-notes.php?action=reject+52833&report=yes Search -- http://master.php.net/manage/user-notes.php

« previous php.notes (#89403) next »