• 欢迎访问搞代码网站,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站!
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏搞代码吧

php和c#一致的DES加密解密算法类

php 搞代码 3年前 (2022-01-23) 20次浏览 已收录 0个评论

DES加解密算法,在C#与PHP中的通用类。

注意:

1、类中的秘钥key跟向量iv,均用的同样的值

2、编码均采用的utf-8

以下为具体代码,可以直接复制去进行实际测试

C#版代码:

using System;   using System.Data;   using System.Configuration;   using System.Web;   using System.Web.Security;   using System.Web.UI;   using System.Web.UI.WebControls;   using System.Web.UI.WebControls.WebParts;   using System.Web.UI.HtmlControls;   using System.Data.SqlClient;   using System.Security.Cryptography;   using System.IO;   using System.Text;  //C# 版DES 加解密算法类public class Des{       //加解密密钥    private static  string skey = "12345678";		#region DESEnCode DES加密   	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);       		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();   	}  	#endregion  		#region DESDeCode DES解密	public static string DESDeCode(string pToDecrypt, string sKey)	{		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 HttpContext.Current.Server.UrlDecode(System.Text.Encoding.Default.GetString(ms.ToArray()));	}    #endregion }     

PHP版代码:

<?php//PHP 版DES 加解密算法类class DES {	var $key;	var $iv; //偏移量		function DES($key) {		//key长度为8位,例如:1234abcd		$this->key = $key;		$this->iv = $key; //默认以$key 作为 iv	}		//加密	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 );	}}header("Content-type: text/html; charset=utf-8");$key = &#39、本文来源gao($daima.com搞@代@#码$网搞gaodaima代码;12345678';$str = 'abc.123';$des = new DES($key);$str_en_des = $des->encrypt($str); //加密字符串$str_de_des = $des->decrypt($str_en_des); //解密字符串echo '加密字符串:',$str,'
';echo '加密秘钥key:',$key,'

';echo '加密后字符串:',$str_en_des,'
';echo '解密后字符串:',$str_de_des,'
';?>

代码均经过网上搜索进行整理,特别感谢博文:http://blog.gaodaima.com/e421083458/article/details/39373815

以上就介绍了php和c#一致的DES加密解密算法类,包括了方面的内容,希望对PHP教程有兴趣的朋友有所帮助。


搞代码网(gaodaima.com)提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发送到邮箱[email protected],我们会在看到邮件的第一时间内为您处理,或直接联系QQ:872152909。本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:php和c#一致的DES加密解密算法类

喜欢 (0)
[搞代码]
分享 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址