コード例 #1
0
ファイル: Common.Helper.Crypto.cs プロジェクト: Harveyzyh/C-
        /// <summary>
        ///  加密 参数:string
        /// </summary>
        /// <param name="palinData">明文</param>
        /// <param name="key">密钥</param>
        /// <param name="iv">向量</param>
        /// <param name="encodingType">编码方式</param>
        /// <returns>string:密文</returns>
        //public static string Encrypt(string palinData, string key, string iv, EncodingStrOrByte.EncodingType encodingType = EncodingStrOrByte.EncodingType.UTF8)
        public string Encrypt(string palinData, EncodingStrOrByte.EncodingType encodingType = EncodingStrOrByte.EncodingType.UTF8)
        {
            if (palinData != null)
            {
                string key = key_def;
                string iv  = key_def;

                if (string.IsNullOrWhiteSpace(palinData))
                {
                    return(null);
                }
                if (!(CheckKey(key) && CheckIv(iv)))
                {
                    return(palinData);
                }
                byte[] toEncryptArray = EncodingStrOrByte.GetBytes(palinData, encodingType);
                var    rm             = new RijndaelManaged
                {
                    IV      = EncodingStrOrByte.GetBytes(iv, encodingType),
                    Key     = EncodingStrOrByte.GetBytes(key, encodingType),
                    Mode    = CipherMode.ECB,
                    Padding = PaddingMode.Zeros
                };
                ICryptoTransform cTransform  = rm.CreateEncryptor();
                byte[]           resultArray = cTransform.TransformFinalBlock(toEncryptArray, 0, toEncryptArray.Length);
                return(Convert.ToBase64String(resultArray, 0, resultArray.Length));
            }
            else
            {
                return(null);
            }
        }
コード例 #2
0
ファイル: Common.Helper.Crypto.cs プロジェクト: Harveyzyh/C-
        /// <summary>  
        /// 加密 参数:byte[] 
        /// </summary>  
        /// <param name="palinData">明文</param>  
        /// <param name="key">密钥</param>  
        /// <param name="iv">向量</param>  
        /// <returns>密文</returns>  
        public byte[] Encrypt(byte[] palinData, string key, string iv, EncodingStrOrByte.EncodingType encodingType = EncodingStrOrByte.EncodingType.UTF8)
        {
            if (palinData == null)
            {
                return(null);
            }
            if (!(CheckKey(key) && CheckIv(iv)))
            {
                return(palinData);
            }
            byte[] bKey = new byte[32];
            Array.Copy(EncodingStrOrByte.GetBytes(key.PadRight(bKey.Length), encodingType), bKey, bKey.Length);
            byte[] bVector = new byte[16];
            Array.Copy(EncodingStrOrByte.GetBytes(iv.PadRight(bVector.Length), encodingType), bVector, bVector.Length);
            byte[] cryptograph       = null; // 加密后的密文  
                        Rijndael Aes = Rijndael.Create();

            // 开辟一块内存流  
            using (MemoryStream Memory = new MemoryStream())
            {
                                // 把内存流对象包装成加密流对象  
                                using (CryptoStream Encryptor = new CryptoStream(Memory, Aes.CreateEncryptor(bKey, bVector), CryptoStreamMode.Write))
                {
                                        // 明文数据写入加密流  
                                        Encryptor.Write(palinData, 0, palinData.Length);

                    Encryptor.FlushFinalBlock();
                    cryptograph = Memory.ToArray();
                }
            }
            return(cryptograph);
        }
コード例 #3
0
ファイル: Common.Helper.Crypto.cs プロジェクト: Harveyzyh/C-
 /// <summary>  
 /// 解密  参数:byte[] 
 /// </summary>  
 /// <param name="encryptedData">被解密的密文</param>  
 /// <param name="key">密钥</param>  
 /// <param name="iv">向量</param>  
 /// <returns>明文</returns>  
 public byte[] Decrypt(byte[] encryptedData, string key, string iv, EncodingStrOrByte.EncodingType encodingType = EncodingStrOrByte.EncodingType.UTF8)
 {
     if (encryptedData == null)
     {
         return(null);
     }
     if (!(CheckKey(key) && CheckIv(iv)))
     {
         return(encryptedData);
     }
     byte[] bKey = new byte[32];
     Array.Copy(EncodingStrOrByte.GetBytes(key.PadRight(bKey.Length), encodingType), bKey, bKey.Length);
     byte[] bVector = new byte[16];
     Array.Copy(EncodingStrOrByte.GetBytes(iv.PadRight(bVector.Length), encodingType), bVector, bVector.Length);
     byte[] original          = null; // 解密后的明文  
                 Rijndael Aes = Rijndael.Create();
                                      // 开辟一块内存流,存储密文  
                 using (MemoryStream Memory = new MemoryStream(encryptedData))
     {
                         // 把内存流对象包装成加密流对象  
                         using (CryptoStream Decryptor = new CryptoStream(Memory, Aes.CreateDecryptor(bKey, bVector), CryptoStreamMode.Read))
         {
                                 // 明文存储区  
                                 using (MemoryStream originalMemory = new MemoryStream())
             {
                 byte[] Buffer    = new byte[1024];
                 int    readBytes = 0;
                 while ((readBytes = Decryptor.Read(Buffer, 0, Buffer.Length)) > 0)
                 {
                     originalMemory.Write(Buffer, 0, readBytes);
                 }
                 original = originalMemory.ToArray();
             }
         }
     }
     return(original);
 }