c# php des
来源:互联网 发布:软件界面欣赏 编辑:程序博客网 时间:2024/05/17 22:46
c#:
public class DES { //加解密密钥 //private static string skey = "12345678"; //初始化向量 private static byte[] DESIV = { 0x12, 0x34, 0x56, 0x78, 0x90, 0xAB, 0xCD, 0xEF }; /// <summary> /// DESEnCode DES加密 /// </summary> /// <param name=”pToEncrypt”></param> /// <param name=”sKey”></param> /// <returns></returns> public static string DESEnCode(string pToEncrypt, string sKey) { //pToEncrypt = HttpContext.Current.Server.UrlEncode(pToEncrypt); DESCryptoServiceProvider des = new DESCryptoServiceProvider(); byte[] inputByteArray = Encoding.GetEncoding("UTF-8").GetBytes(pToEncrypt); //建立加密对象的密钥和偏移量 //原文使用ASCIIEncoding.ASCII方法的GetBytes方法 //使得输入密码必须输入英文文本 des.Key = ASCIIEncoding.ASCII.GetBytes(sKey); des.IV = ASCIIEncoding.ASCII.GetBytes(sKey); MemoryStream ms = new MemoryStream(); CryptoStream cs = new CryptoStream(ms, des.CreateEncryptor(), CryptoStreamMode.Write); cs.Write(inputByteArray, 0, inputByteArray.Length); cs.FlushFinalBlock(); StringBuilder ret = new StringBuilder(); foreach (byte b in ms.ToArray()) { ret.AppendFormat("{0:X2}", b); } ret.ToString(); return ret.ToString(); } /// <summary> /// DESDeCode DES解密 /// </summary> /// <param name=”pToDecrypt”> 待解密的字符串</param> /// <param name=”sKey”> 解密密钥,要求为8字节,和加密密钥相同</param> /// <returns>解密成功返回解密后的字符串,失败返源串</returns> public static string DESDeCode(string pToDecrypt, string sKey) { // HttpContext.Current.Response.Write(pToDecrypt + “<br>” + sKey); // HttpContext.Current.Response.End(); DESCryptoServiceProvider des = new DESCryptoServiceProvider(); byte[] inputByteArray = new byte[pToDecrypt.Length / 2]; for (int x = 0; x < pToDecrypt.Length / 2; x++) { int i = (Convert.ToInt32(pToDecrypt.Substring(x * 2, 2), 16)); inputByteArray[x] = (byte)i; } des.Key = ASCIIEncoding.ASCII.GetBytes(sKey); des.IV = ASCIIEncoding.ASCII.GetBytes(sKey); MemoryStream ms = new MemoryStream(); CryptoStream cs = new CryptoStream(ms, des.CreateDecryptor(), CryptoStreamMode.Write); cs.Write(inputByteArray, 0, inputByteArray.Length); cs.FlushFinalBlock(); StringBuilder ret = new StringBuilder(); return System.Text.Encoding.Default.GetString(ms.ToArray()); //return HttpContext.Current.Server.UrlDecode(System.Text.Encoding.Default.GetString(ms.ToArray())); } }
php:
<?php// s777n.netclass DES {var $key;var $iv; // 偏移量function DES($key, $iv = 0) {// key长度8例如:1234abcd$this->key = $key;if ($iv == 0) {$this->iv = $key;} 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 ( $hexData ); $i += 2) {$binData .= chr ( hexdec ( substr ( $hexData, $i, 2 ) ) );}return $binData;}function pkcs5Pad($text, $blocksize) {$pad = $blocksize - (strlen ( $text ) % $blocksize);return $text . str_repeat ( chr ( $pad ), $pad );}function pkcs5Unpad($text) {$pad = ord ( $text {strlen ( $text ) - 1} );if ($pad > strlen ( $text ))return false;if (strspn ( $text, chr ( $pad ), strlen ( $text ) - $pad ) != $pad)return false;return substr ( $text, 0, - 1 * $pad );}}/*$str = '123456789';$key = '1234abcd';$crypt = new DES ( $key );$mstr = $crypt->encrypt ( $str );$str = $crypt->decrypt ( $mstr );echo $str . ' <=> ' . $mstr;*/$str = '6BB3151AA457962A';$key = '1234abcd';$crypt = new DES ( $key );$str = $crypt->decrypt ( $str );echo $str ;?>
- c# php des
- PHP与C#通用 DES 加解密
- DES-C#
- des c#
- php实现和c#一致的DES加密解密
- php和c#一致的DES加密解密算法类
- DES ECB模式JAVA PHP C#实现加密、解密兼容
- php des和 java des
- php实现和c#一致的DES加密解密 (php中调用方法)
- PHP DES加密解密
- php DES加密算法
- php加密:3DES
- php的DES加密算法
- 自定义PHP DES加密
- PHP-des加密
- .NET C# DES入门
- des加密(c#实现)
- des加密(c#实现)
- linux下jboss配置
- graphviz画结构体的图-手动
- directshow的push和pull mode
- LINUX C代码风格
- DM8168 VPORT口管脚总结
- c# php des
- 使用exp做同平台同环境表空间传输。
- Understoodit课堂沟通应用:不用举手,偷偷告诉老师你没听懂
- 文章风格: 一级标题使用蓝色字体,二级和三级使用黑色,重点部分使用红色或黄色标记,正文采用浅灰色
- window.open参数完全手册
- java 中的常量定义,final 的问题
- 我的trac:trac0.12.3+python2.6
- 文件读写中出现的问题
- Android开发:同一ImageView显示不同图片