1. 程式人生 > >C#通用類庫--加密解密類

C#通用類庫--加密解密類

//類名:EcanSecurity
//作用:加密解密
//作者:劉典武
//時間:2010-12-01using System;
using System.Collections.Generic;
using System.Text;
using System.Security.Cryptography;
using System.IO;

namespace Ecan
{
    
publicclass EcanSecurity
    {
        
/*MD5是message-digest algorithm 5(資訊-摘要演算法)的縮寫,
         * 被廣泛用於加密和解密技術上,它可以說是檔案的“數字指紋”。
         * 任何一個檔案,無論是可執行程式、影象檔案、臨時檔案或者其他任何型別的檔案,
         * 也不管它體積多大,都有且只有一個獨一無二的MD5資訊值,並且如果這個檔案被修改過,
         * 它的MD5值也將隨之改變。因此,我們可以通過對比同一檔案的MD5值,
         * 來校驗這個檔案是否被“篡改”過。
*////<summary>/// MD5加密函式
        
///</summary>///<param name="str">要加密的字串</param>///<returns>加密後的字串</returns>///publicstring md5_Encode(string str)
        {
            MD5 m 
=new MD5CryptoServiceProvider();
            
byte[] data = Encoding.Default.GetBytes(str);
            
byte[] result 
= m.ComputeHash(data);
            
string ret1 ="";
            
try
            {
                
for (int j =0; j < result.Length; j++)
                {
                    ret1 
+= result[j].ToString("x").PadLeft(2'0');
                }
                
return ret1;
            }
            
catch

            {
                
return str;
            }
        }       

        
///<summary>/// 簡單加密函式
        
///</summary>///<param name="str">要加密的字串</param>///<returns>返回加密後的字串</returns>///publicstring simple_Encode(string str)
        {
            
string s ="";
            
try
            {
                
for (int i =0; i < str.Length; i++)
                {
                    s 
+= (char)(str[i] +10-1*2);
                }
                
return s;
            }
            
catch
            {
                
return str;
            }
        }
        
        
///<summary>/// 簡單解密函式
        
///</summary>///<param name="str">要解密的字串</param>///<returns>返回解密後的字串</returns>///publicstring simple_Decode(string str)
        {
            
string s ="";
            
try
            {
                
for (int i =0; i < str.Length; i++)
                {
                    s 
+= (char)(str[i] -10+1*2);
                }
                
return s;
            }
            
catch
            {
                
return str;
            }
        }

        
//預設金鑰向量privatestaticbyte[] Keys = { 0x120x340x560x780x900xAB0xCD0xEF };
        
        
///<summary>/// 對稱加密法加密函式
        
///</summary>///<param name="encryptString">待加密的字串</param>///<param name="encryptKey">加密金鑰,要求為8位</param>///<returns>加密成功返回加密後的字串,失敗返回源串</returns>publicstring symmetry_Encode(string encryptString, string encryptKey)
        {
            
try
            {
                
byte[] rgbKey = Encoding.UTF8.GetBytes(encryptKey.Substring(08));
                
byte[] rgbIV = Keys;
                
byte[] inputByteArray = Encoding.UTF8.GetBytes(encryptString);
                DESCryptoServiceProvider dCSP 
=new DESCryptoServiceProvider();
                MemoryStream mStream 
=new MemoryStream();
                CryptoStream cStream 
=new CryptoStream(mStream, dCSP.CreateEncryptor(rgbKey, rgbIV), CryptoStreamMode.Write);
                cStream.Write(inputByteArray, 
0, inputByteArray.Length);
                cStream.FlushFinalBlock();
                
return Convert.ToBase64String(mStream.ToArray());
            }
            
catch
            {
                
return encryptString;
            }
        }
       
        
///<summary>/// 對稱加密法解密函式
        
///</summary>///<param name="decryptString">待解密的字串</param>///<param name="decryptKey">解密金鑰,要求為8位,和加密金鑰相同</param>///<returns>解密成功返回解密後的字串,失敗返源串</returns>publicstring symmetry_Decode(string decryptString, string decryptKey)
        {
            
try
            {
                
byte[] rgbKey = Encoding.UTF8.GetBytes(decryptKey);
                
byte[] rgbIV = Keys;
                
byte[] inputByteArray = Convert.FromBase64String(decryptString);
                DESCryptoServiceProvider DCSP 
=new DESCryptoServiceProvider();
                MemoryStream mStream 
=new MemoryStream();
                CryptoStream cStream 
=new CryptoStream(mStream, DCSP.CreateDecryptor(rgbKey, rgbIV), CryptoStreamMode.Write);
                cStream.Write(inputByteArray, 
0, inputByteArray.Length);
                cStream.FlushFinalBlock();
                
return Encoding.UTF8.GetString(mStream.ToArray());
            }
            
catch
            {
                
return decryptString;
            }
        }
    }
}

相關推薦

C#通用--加密解密

//類名:EcanSecurity//作用:加密解密//作者:劉典武//時間:2010-12-01using System;using System.Collections.Generic;using System.Text;using System.Security.Cryptography;using S

C#自定義RSA加密解密及RSA簽名和驗證實例

狀態 share normal evel thumb weight encrypt security clas 本文實例講述了C#自定義RSA加密解密及RSA簽名和驗證類。分享給大家供大家參考。具體分析如下: 這個C#類自定義RSA加密解密及RSA簽名和驗證,包含了RSA

C# 常見加密解密

ret static ostream 代碼示例 normal text summary 封裝 toolbar 常見的加密方式分為可逆和不可逆兩種方式 可逆:RSA,AES,DES等 不可逆:常見的MD5,SHAD等 常見的加密方式封裝到一個Pass

Java的bouncycastle密碼的RSA的加密,解密,

import org.bouncycastle.asn1.x509.SubjectPublicKeyInfo; import org.bouncycastle.crypto.generators.*; import org.bouncycastle.crypto.params

C#密碼加密解密

using System; using System.Globalization; using System.IO; using System.Security.Cryptography; using System.Text; namespace Utils {     /

[轉][C#]加密解密

{ public static class Crypter { private static string FDefaultPassword = typeof(Crypter).FullName; public static string Default

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

DES加解密演算法,在C#與PHP中的通用類。 注意: 1、類中的祕鑰key跟向量iv,均用的同樣的值 2、編碼均採用的utf-8 以下為具體程式碼,可以直接複製去進行實際測試 C#版程式碼: using System; using System.Data;

java文本文件加密解密

file you location ble jbutton getpath ini cati absolute 原文:http://www.open-open.com/code/view/1420031154765 import java.awt.*; impor

MD5加密解密(asp.net)&使用MD5過時處理

bytes div height crypt then .text ble tco doc 加密類 #region ========加密======== /// <summary> /// 加密 /// </summary> /

php aes加密解密(兼容php5、php7)

bytes pri rip dom ase lee vat idea cipher <?php /** * @desc:php aes加密解密類 * @author [Lee] <[<[email protected]>]> */ class

PHP針對數字的加密解密,可直接使用

<?phpnamespace app;/** * 加密解密類 * 該演算法僅支援加密數字。比較適用於資料庫中id欄位的加密解密,以及根據數字顯示url的加密。 * @author 深秋的竹子 * @ver

PHP中AES加密解密

我們在工作中會遇到各種加密,下面就是PHP中AES加密解密的類 <?php  class Aes {     /**      * var string&nbs

MD5 加密解密(通過Key 對資料進行加密)直接複製使用

import java.security.MessageDigest; import java.security.NoSuchAlgorithmException; import javax.crypto.Cipher; import javax.crypto.spec.S

java常用工具之DES和Base64加密解密

一、DES加密和解密 package com.itjh.javaUtil; import java.io.UnsupportedEncodingException; import java.security.InvalidKeyException; import

PHP、JAVA、C#、Object-C、Android 通用的DES加密解密

PHP加密解密: class JoDES { private static $_instance = NULL; /** * @return JoDES */ public static function sh

PHP DES加密解密

今天寫App介面的時候需要傳遞加密資料給APP端,於是就寫了下面的DES加密類,親測正確程式碼如下 class CryptDes { function __construct(){ $this->key = 'codelovers'; //金

C# 實現 JAVA AES加密解密[原創]

com base gets tran con spec ole tor 技術分享 以下是網上普遍能收到的JAVA AES加密解密方法。 因為裏面用到了KeyGenerator 和 SecureRandom,但是.NET 裏面沒有這2個類。無法使用安全隨機數生成KEY。 我們

C#字符串加密解密方法實例

oba div 包含 stream ren 無限級 toarray efault .get 本文實例講述了C#字符串加密解密方法。分享給大家供大家參考。具體如下: 代碼如下: #region 加密解密 static string encryptKey= “Oyea”

Java 常用 之 比較 Comparable

instance 多少 一個 public 類關系 name length compare 實例 http://www.verejava.com/?id=169930999133100 /** 知識點: 比較類 Comparable 題目: 將某班學生按數

C#與Java AES 加密解密

參考文件:https://www.cnblogs.com/xbzhu/p/7064642.html 前幾天對接Java介面,需要C#加密引數,Java解密。奈何網上找了一堆大同小異的加解密方法都跟Jaca加密的密文不一致,Java介面也無法解密,直到看見上面連結的第二種方法。能夠正常的解密Java加密的