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

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) );

    }

}

你可能感兴趣的:(.net)