黄学彪
2019-11-25 160785587667cc0d927f85e44c139ec9dde13a9e
ZigbeeApp/Shared/Phone/ZigBee/Common/SecuritySet.cs
@@ -44,6 +44,68 @@
            return Convert.ToBase64String(resultArray, 0, resultArray.Length);
        }
        // <summary>
        /// Aes加密数据
        /// 采用128位(16字节)分组加密和解密数据,加密模式为CBC,偏移量(iv)和密钥一致,填充模式采用pkcs5或pkcs7,加密结果输出base64编码。
        /// </summary>
        /// <returns>The encrypt.</returns>
        /// <param name="bytes">P to encrypt.</param>
        /// <param name="key">Key.</param>
        public static byte []AesEncryptBytes(byte[] bytes, string key)
        {
            if (bytes == null)
                return null;
            //配置AES加密Key(密钥、向量、模式、填充)
            var rm = new RijndaelManaged
            {
                Key = Encoding.UTF8.GetBytes(key),
                IV = Encoding.UTF8.GetBytes(key),
                Mode = CipherMode.CBC,
                Padding = PaddingMode.PKCS7
            };
            //创建AES加密器对象
            var cTransform = rm.CreateEncryptor();
            //使用AES将明文流转成密文字节数组
            return cTransform.TransformFinalBlock(bytes, 0, bytes.Length);
            //将AES生成的密文字节数组转成Base64字符串
            //return Convert.ToBase64String(resultArray, 0, resultArray.Length);
        }
        /// <summary>
        /// Aes 解密数据
        /// </summary>
        /// <returns>The decrypt.</returns>
        /// <param name="pToDecrypt">P to decrypt.</param>
        /// <param name="key">Key.</param>
        public static byte []AesDecryptBytes(byte[] bytes, string key)
        {
            //AES密文Base64转成字符串
            var toEncryptArray = bytes;// Convert.FromBase64String(System.Text.Encoding.UTF8.GetString(bytes));
            //配置AES加密Key(密钥、向量、模式、填充)
            var rm = new RijndaelManaged
            {
                Key = Encoding.UTF8.GetBytes(key),
                IV = Encoding.UTF8.GetBytes(key),
                //Mode = CipherMode.ECB,
                Mode = CipherMode.CBC,
                Padding = PaddingMode.PKCS7
            };
            //创建AES解密器对象
            var cTransform = rm.CreateDecryptor();
            //使用AES将密文流转成明文的字节数组
            return cTransform.TransformFinalBlock(toEncryptArray, 0, toEncryptArray.Length);
            //转成字符串
            //return Encoding.UTF8.GetString(resultArray);
        }
        /// <summary>
        /// Aes 解密数据
        /// </summary>