您好,欢迎访问一九零五行业门户网

PHP与asp.net C#可共用的可逆加密算法

因为工作需我们需要在php中生成加密然后在asp.net中接受过来的密码再解密,下面我找到一个php与asp.net c#可共用的可逆加密算法,有需要了解的同学可参考.
php加密算法,代码如下:
key = $key; if( $iv == 0 ) { $this->iv = $key; //默认以$key 作为 iv } else { $this->iv = $iv; //mcrypt_create_iv ( mcrypt_get_block_size (mcrypt_des, mcrypt_mode_cbc), mcrypt_dev_random ); } } function encrypt($str) { //加密,返回大写十六进制字符串 $size = mcrypt_get_block_size ( mcrypt_des, mcrypt_mode_cbc ); $str = $this->pkcs5pad ( $str, $size ); return strtoupper( bin2hex( mcrypt_cbc(mcrypt_des, $this->key, $str, mcrypt_encrypt, $this->iv ) ) ); } function decrypt($str) { //解密 $strbin = $this->hex2bin( strtolower( $str ) ); $str = mcrypt_cbc( mcrypt_des, $this->key, $strbin, mcrypt_decrypt, $this->iv ); $str = $this->pkcs5unpad( $str ); return $str; } function hex2bin($hexdata) { $bindata = ; for($i = 0; $i strlen ( $text )) return false; if (strspn ( $text, chr ( $pad ), strlen ( $text ) - $pad ) != $pad) return false; return substr ( $text, 0, - 1 * $pad ); } } ?>
asp.net程序代码,代码如下:using system; using system.collections.generic; using system.io; using system.linq; using system.security.cryptography; using system.text; namespace windowsformsapplication1 { /// /// des加密解密字符串 /// public class desencryption { /// /// des加密字符串 /// /// 待加密的字符串 /// 加密密钥,要求为8位 /// 加密成功返回加密后的字符串,失败返回null public static string encryptdes(string encryptstring, string encryptkey = 11001100) { try { byte[] rgbkey = asciiencoding.ascii.getbytes(encryptkey.substring(0, 8)); byte[] rgbiv = rgbkey; byte[] inputbytearray = encoding.utf8.getbytes(encryptstring); descryptoserviceprovider dcsp = new descryptoserviceprovider(); memorystream mstream = new memorystream(); cryptostream cstream = new cryptostream(mstream, dcsp.createencryptor(rgbkey, rgbiv), cryptostreammode.write); cstream.write(inputbytearray, 0, inputbytearray.length); cstream.flushfinalblock(); stringbuilder ret = new stringbuilder(); foreach (byte b in mstream.toarray()) { ret.appendformat({0:x2}, b); } ret.tostring(); return ret.tostring(); } catch { return null; } } /// /// des解密字符串 /// /// 待解密的字符串 /// 解密密钥,要求为8位,和加密密钥相同 /// 解密成功返回解密后的字符串,失败返回null public static string decryptdes(string decryptstring, string decryptkey = 11001100) { try { byte[] rgbkey = asciiencoding.ascii.getbytes(decryptkey); byte[] rgbiv = rgbkey; byte[] inputbytearray = new byte[decryptstring.length / 2]; for (int x = 0; x < decryptstring.length / 2; x++) { int i = (convert.toint32(decryptstring.substring(x * 2, 2), 16)); inputbytearray[x] = (byte)i; } descryptoserviceprovider dcsp = new descryptoserviceprovider(); memorystream mstream = new memorystream(); cryptostream cstream = new cryptostream(mstream, dcsp.createdecryptor(rgbkey, rgbiv), cryptostreammode.write); cstream.write(inputbytearray, 0, inputbytearray.length); cstream.flushfinalblock(); return encoding.utf8.getstring(mstream.toarray()); } catch { return null; } } } }
教程网址:
欢迎收藏∩_∩但请保留本文链接。
其它类似信息

推荐信息