C#常用加密方式

    技术2026-05-14  6

    ——————————————————————————MD5加密方式————————————————————————————-— 

     

    //tostring中的参数标示用何种格式来格式化字符串,其中X标示16进制,2表示两位        //  string str1=byte.ToString("x");//str1="0";        //  string str2=byte.ToString("x2");//str2="00";

            public static string GetMD5Encording(string str)        {

                MD5 md5 = new MD5CryptoServiceProvider();            byte[] _byte = Encoding.Default.GetBytes(str);            byte[] _byteRst = md5.ComputeHash(_byte);            StringBuilder SBuilder = new StringBuilder();            for (int i = 0; i < _byteRst.Length; i++)            {                SBuilder.Append(_byteRst[i].ToString("x2"));            }            return SBuilder.ToString();        }    }

     

    ————————————————————————————对称加密—————————————————————————————

     

    using System.Text;

        using System.IO;

        using System;

        using System.Text.RegularExpressions;

        using System.Security.Cryptography;

     

        namespace LHCHIP.Common

        {

            /** <summary>

            /// 对称加密算法类

            /// </summary>

            public class DecryptEncrypt

            {

                /** <summary>

                /// 返回自身的一个类

                /// </summary>

                public static DecryptEncrypt MyDecryptEncrypt

               {

                    get

                   {

                        return new DecryptEncrypt();

                    }

                }

     

     

            private SymmetricAlgorithm mobjCryptoService;

            private string Key;

     

            /** <summary>

            /// 对称加密类的构造函数

            /// </summary>

            internal DecryptEncrypt()

            {

                mobjCryptoService = new RijndaelManaged();

                Key = "rrp(%&h70x89H$jgsfgfsI0456Ftma81&fvHrr&&76*h%(12lJ$lhj!y6&(*jkPer44a";

            }

     

            /** <summary>

            /// 获得密钥

            /// </summary>

            /// <returns>密钥</returns>

            private byte[] GetLegalKey()

            {

                string _TempKey = Key;

                mobjCryptoService.GenerateKey();

                byte[] bytTemp = mobjCryptoService.Key;

                int KeyLength = bytTemp.Length;

                if (_TempKey.Length > KeyLength)

     

             _TempKey = _TempKey.Substring(0, KeyLength);

                else if (_TempKey.Length < KeyLength)

                    _TempKey = _TempKey.PadRight(KeyLength, ' ');

                return ASCIIEncoding.ASCII.GetBytes(_TempKey);

            }

            /** <summary>

            /// 获得初始向量IV

            /// </summary>

            /// <returns>初试向量IV</returns>

            private byte[] GetLegalIV()

            {

                string _TempIV = "@afetj*Ghg7!rNIfsgr95GUqd9gsrb#GG7HBh(urjj6HJ($jhWk7&!hjjri%$hjk";

                mobjCryptoService.GenerateIV();

                byte[] bytTemp = mobjCryptoService.IV;

                int IVLength = bytTemp.Length;

                if (_TempIV.Length > IVLength)

                    _TempIV = _TempIV.Substring(0, IVLength);

                else if (_TempIV.Length < IVLength)

                    _TempIV = _TempIV.PadRight(IVLength, ' ');

                return ASCIIEncoding.ASCII.GetBytes(_TempIV);

            }

     

            /** <summary>

            /// 加密方法

            /// </summary>

            /// <param name="Source">待加密的串</param>

            /// <returns>经过加密的串</returns>

            public string Encrypto(string Source)

            {

                byte[] bytIn = UTF8Encoding.UTF8.GetBytes(Source);

                MemoryStream ms = new MemoryStream();

                mobjCryptoService.Key = GetLegalKey();

                mobjCryptoService.IV = GetLegalIV();

                //创建对称加密器对象

            ICryptoTransform encrypto = mobjCryptoService.CreateEncryptor();

                //定义将数据流链接到加密转换的流

                CryptoStream cs = new CryptoStream(ms, encrypto, CryptoStreamMode.Write);

                cs.Write(bytIn, 0, bytIn.Length);

                cs.FlushFinalBlock();

                ms.Close();

                byte[] bytOut = ms.ToArray();

                return Convert.ToBase64String(bytOut);

            }

     

     

            /** <summary>

            /// 解密方法

            /// </summary>

            /// <param name="Source">待解密的串</param>

            /// <returns>经过解密的串</returns>

            public string Decrypto(string Source)

            {

                byte[] bytIn = Convert.FromBase64String(Source);

                MemoryStream ms = new MemoryStream(bytIn, 0, bytIn.Length);

                mobjCryptoService.Key = GetLegalKey();

                mobjCryptoService.IV = GetLegalIV();

                //创建对称解密器对象

                ICryptoTransform encrypto = mobjCryptoService.CreateDecryptor();

                //定义将数据流链接到加密转换的流

                CryptoStream cs = new CryptoStream(ms, encrypto, CryptoStreamMode.Read);

                StreamReader sr = new StreamReader(cs);

                return sr.ReadToEnd();

                }

     

            }

        }

    ————————————————————————DES加密———————————————————————————————— using System; using System.Security.Cryptography; using System.IO; using System.Text; public class EncryptStringDES {     public static void Main(String[] args)     {         if (args.Length < 1)         {             Console.WriteLine("Usage: des_demo <string-to-encrypt>", args[0]);             return;         }         // 使用UTF8函数加密输入参数         UTF8Encoding utf8Encoding = new UTF8Encoding();         byte[] inputByteArray = utf8Encoding.GetBytes(args[0].ToCharArray());         // 方式一:调用默认的DES实现方法DES_CSP.         DES des = DES.Create();         // 方式二:直接使用DES_CSP()实现DES的实体         //DES_CSP DES = new DES_CSP();         // 初始化DES加密的密钥和一个随机的、8比特的初始化向量(IV)         Byte[] key = { 0x01, 0x23, 0x45, 0x67, 0x89, 0xab, 0xcd, 0xef };         Byte[] IV = { 0x12, 0x34, 0x56, 0x78, 0x90, 0xab, 0xcd, 0xef };         des.Key = key;         des.IV = IV;         // 建立加密流         SymmetricStreamEncryptor sse = des.CreateEncryptor();         // 使用CryptoMemoryStream方法获取加密过程的输出         CryptoMemoryStream cms = new CryptoMemoryStream();         // 将SymmetricStreamEncryptor流中的加密数据输出到CryptoMemoryStream中         sse.SetSink(cms);         // 加密完毕,将结果输出到控制台         sse.Write(inputByteArray);         sse.CloseStream();         // 获取加密数据         byte[] encryptedData = cms.Data;         // 输出加密后结果         Console.WriteLine("加密结果:");         for (int i = 0; i < encryptedData.Length; i++)         {             Console.Write("{0:X2} ", encryptedData[i]);         }         Console.WriteLine();         //上面演示了如何进行加密,下面演示如何进行解密         SymmetricStreamDecryptor ssd = des.CreateDecryptor();         cms = new CryptoMemoryStream();         ssd.SetSink(cms);         ssd.Write(encryptedData);         ssd.CloseStream();         byte[] decryptedData = cms.Data;         char[] decryptedCharArray = utf8Encoding.GetChars(decryptedData);         Console.WriteLine("解密后数据:");         Console.Write(decryptedCharArray);         Console.WriteLine();     } }

     

    最新回复(0)