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

WBOY
Freigeben: 2016-06-20 13:05:04
Original
1037 Leute haben es durchsucht

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

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 

<p><strong>PHP版代码:</strong></p>

<pre class="brush:php;toolbar:false"><?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 = '12345678';
$str = 'abc.123';
$des = new DES($key);
$str_en_des = $des->encrypt($str); //加密字符串
$str_de_des = $des->decrypt($str_en_des); //解密字符串
echo '加密字符串:',$str,'<br>';
echo '加密秘钥key:',$key,'<br><br>';
echo '加密后字符串:',$str_en_des,'<br>';
echo '解密后字符串:',$str_de_des,'<br>';

?>
Nach dem Login kopieren


Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage