Newer
Older
IRIS_COLLECT / IOM_cs / tool / CryptoHelper.cs
yangqianqian on 29 Dec 2020 2 KB first
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Security.Cryptography;
using System.IO;

namespace IOM_cs
{
    //AES对称加密算法类
    public class CryptoHelper
    {
        //AES密文长度=(原文长度/16)*16+16;
        //适用于原文长度<64
        //AES加密算法
        public static string Encrypt(string toEncrypt)
        {
            try
            {
                if (toEncrypt == "" || toEncrypt == null) return null;

                byte[] keyArray = UTF8Encoding.UTF8.GetBytes("12345678901234567890123456789012"); //32*8=256位密钥                  
                byte[] toEncryptArray = UTF8Encoding.UTF8.GetBytes(toEncrypt);
            
                RijndaelManaged rDel = new RijndaelManaged();
                rDel.Key = keyArray;
                rDel.Mode = CipherMode.ECB; //分别加密每个块
                rDel.Padding = PaddingMode.PKCS7; //填充模式

                ICryptoTransform cTransform = rDel.CreateEncryptor();
                byte[] resultArray;

                if (toEncryptArray.Length < 64)
                {
                    resultArray = cTransform.TransformFinalBlock(toEncryptArray, 0, toEncryptArray.Length);                                    
                }
                else 
                {
                    byte[] toEncryptArray1 = new byte[63];
                    Array.Copy(toEncryptArray, toEncryptArray1, 63);                   
                    resultArray = cTransform.TransformFinalBlock(toEncryptArray1, 0, toEncryptArray1.Length);
                 
                }

                return Convert.ToBase64String(resultArray, 0, resultArray.Length); 
                                        
            }
            catch (Exception ex)
            {
                System.Windows.Forms.MessageBox.Show("EncryptException" + ex.Message);
                return "-1";
            }

                  
        }



        //AES解密算法
        public static string Decrypt(string toDecrypt)
        {
            if (toDecrypt == "" || toDecrypt == null) return null;

            byte[] keyArray = UTF8Encoding.UTF8.GetBytes("12345678901234567890123456789012");
            byte[] toEncryptArray = Convert.FromBase64String(toDecrypt);

            RijndaelManaged rDel = new RijndaelManaged();
            rDel.Key = keyArray;
            rDel.Mode = CipherMode.ECB;
            rDel.Padding = PaddingMode.PKCS7;

            ICryptoTransform cTransform = rDel.CreateDecryptor();
            byte[] resultArray = cTransform.TransformFinalBlock(toEncryptArray, 0, toEncryptArray.Length);

            return UTF8Encoding.UTF8.GetString(resultArray);

        }

       



    }

}