PHP和.NET通用的加密解密函式類,均使用3DES加解密

科技小能手發表於2017-11-12
最近平臺改造,需要寫一個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) );

    }

}

本文轉自dotfun 51CTO部落格,原文連結:http://blog.51cto.com/dotfun/286008


相關文章