AES/ECB/NOPADDING数据加解密

/// <summary>
        /// 有密码的AES加密 
        /// </summary>
        /// <param name="text">加密字符</param>
        /// <param name="password">加密的密码</param>
        /// <param name="iv">密钥</param>
        /// <returns></returns>
        public static byte[] Encrypt(string toEncrypt, byte[] keyArray)
        {
            //不足16的倍数补空格
            if (toEncrypt.Length % 16 != 0)
            {
                int tem = toEncrypt.Length % 16;
                for (int i = 0; i < 16 - tem; i++)
                {
                    toEncrypt += " ";
                }
            }
            //byte[] keyArray1 = UTF8Encoding.UTF8.GetBytes("wuyajungogo");
            byte[] toEncryptArray = UTF8Encoding.UTF8.GetBytes(toEncrypt);
            

            RijndaelManaged rDel = new RijndaelManaged();
            rDel.Key = keyArray;
            //rDel.IV = "";
            rDel.Mode = CipherMode.ECB;
            rDel.Padding = PaddingMode.None;

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


            return resultArray;
        }

        /// <summary>
        /// AES解密
        /// </summary>
        /// <param name="text"></param>
        /// <param name="password"></param>
        /// <param name="iv"></param>
        /// <returns></returns>
        public static string Decrypt(byte[] toEncryptArray, byte[] keyArray)
        {
            //byte[] keyArray = UTF8Encoding.UTF8.GetBytes(key);
            
            //byte[] toEncryptArray = Convert.FromBase64String(toDecrypt);

            //补充
            

            RijndaelManaged rDel = new RijndaelManaged();
            rDel.Key = keyArray;
            rDel.Mode = CipherMode.ECB;
            rDel.Padding = PaddingMode.None;
            
            ICryptoTransform cTransform = rDel.CreateDecryptor();
            byte[] resultArray = cTransform.TransformFinalBlock(toEncryptArray, 0, toEncryptArray.Length);

            return UTF8Encoding.UTF8.GetString(resultArray);
        }

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Qt是一个功能强大的跨平台应用开发框架,支持多种加密算法,包括AES加密算法。在Qt中实现AES/ECB/PKCS5Padding加密解密需要以下步骤: 1. 导入相关的库文件。在Qt中,可以通过调用`#include <QCryptographicHash>`和`#include <QByteArray>`来导入相关的库文件。 2. 选择合适的AES模式。在这个例子中,我们选择了ECB模式,这是一种简单的模式,适用于数据块相互独立的情况。同时,我们要确保使用PKCS5Padding填充方式。 3. 编写加密函数。在加密函数中,我们需要提供待加密的数据和密钥。具体实现可以参考以下代码: ```cpp QString encrypt(QString data, QString key) { QByteArray rawData = data.toUtf8(); QByteArray rawKey = QCryptographicHash::hash(key.toUtf8(), QCryptographicHash::Md5); // 创建AES加密对象 AESCrypt aes(rawKey, AESCrypt::ECB, AESCrypt::PKCS5Padding); // 加密数据 QByteArray encryptedData = aes.encrypt(rawData); // 返回加密后的数据 return QString(encryptedData.toBase64()); } ``` 4. 编写解密函数。在解密函数中,我们同样需要提供待解密的数据和密钥。具体实现可以参考以下代码: ```cpp QString decrypt(QString data, QString key) { QByteArray encryptedData = QByteArray::fromBase64(data.toUtf8()); QByteArray rawKey = QCryptographicHash::hash(key.toUtf8(), QCryptographicHash::Md5); // 创建AES解密对象 AESCrypt aes(rawKey, AESCrypt::ECB, AESCrypt::PKCS5Padding); // 解密数据 QByteArray decryptedData = aes.decrypt(encryptedData); // 返回解密后的数据 return QString(decryptedData); } ``` 以上是用Qt实现AES/ECB/PKCS5Padding加密解密的简单示例。根据具体的需求,你可能需要进一步完善这些函数和添加错误处理等功能。此外,需要注意的是,加密算法涉及数据安全,建议在生产环境中使用经过专业验证的加密方式,并采取其他的安全措施。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值