您的位置:首页 > 编程语言 > PHP开发

PHP和.NET 程序在数据交换时候加解密 3DES是最好选择

2013-08-24 14:45 537 查看
PHP和.NET 程序在数据交换时候加解密 3DES是最好选择,而且他们两个md5加密也基本一致,只是PHP加密完成后都是小写字母。PHP和.NET下通用的加密解密类,如下:PHP加解密函数:

function encrypt($string) {

//加密用的密钥文件

$key = "xxxxxxxx";

//加密方法

$cipher_alg = MCRYPT_TRIPLEDES;

//初始化向量来增加安全性

$iv = mcrypt_create_iv(mcrypt_get_iv_size($cipher_alg,MCRYPT_MODE_ECB), MCRYPT_RAND);

//开始加密

$encrypted_string = mcrypt_encrypt($cipher_alg, $key, $string, MCRYPT_MODE_ECB, $iv);

return base64_encode($encrypted_string);//转化成16进制

// return $encrypted_string

}

function decrypt($string) {

$string = base64_decode($string);

//加密用的密钥文件

$key = "xxxxxxxx";

//加密方法

$cipher_alg = MCRYPT_TRIPLEDES;

//初始化向量来增加安全性

$iv = mcrypt_create_iv(mcrypt_get_iv_size($cipher_alg,MCRYPT_MODE_ECB), MCRYPT_RAND);

//开始加密

$decrypted_string = mcrypt_decrypt($cipher_alg, $key, $string, MCRYPT_MODE_ECB, $iv);

return trim($decrypted_string);

}



C#加解密类:

using System;

using System.Security.Cryptography;

using System.Text;

/**////

/// Crypto3DES 的摘要说明。

///

public class Crypto3DES

{

public Crypto3DES()

{

//

// TODO: 在此处添加构造函数逻辑

//

}

private System.Text.Encoding encoding;

/**////

/// 获取密匙

///

public string Key

{

get

{

return "xxxxxxxx";

}

}

/**////

/// 获取或设置加密解密的编码

///

public System.Text.Encoding Encoding

{

get

{

if( encoding == null )

{

encoding = System.Text.Encoding.UTF8;

}

return encoding;

}

set

{

encoding = value;

}

}

/**////

/// 加密

public string Encrypt3DES( string strString )

{

DESCryptoServiceProvider DES = new DESCryptoServiceProvider();

DES.Key = Encoding.GetBytes( this.Key );

DES.Mode = CipherMode.ECB;

DES.Padding = PaddingMode.Zeros;

ICryptoTransform DESEncrypt = DES.CreateEncryptor();

byte[] Buffer = encoding.GetBytes(strString);

return Convert.ToBase64String(DESEncrypt.TransformFinalBlock(Buffer, 0, Buffer.Length));

}

/**////

/// 解密

public string Decrypt3DES( string strString )

{

DESCryptoServiceProvider DES = new DESCryptoServiceProvider ();

DES.Key = Encoding.UTF8.GetBytes( this.Key );

DES.Mode = CipherMode.ECB;

DES.Padding = PaddingMode.Zeros;

ICryptoTransform DESDecrypt = DES.CreateDecryptor();

byte[] Buffer = Convert.FromBase64String(strString);

return UTF8Encoding.UTF8.GetString( DESDecrypt.TransformFinalBlock(Buffer, 0, Buffer.Length) );

}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐