C# 对称加密DES

DES加密是传统的对称加密,使用8位的向量和8位的密钥进行加密的。
现在我们定义向量和密钥:

 向量    byte[] iv = { 0x13, 0x65, 0x57, 0x89, 0x93, 0xAB, 0xCD, 0xEF };
 密钥:20200516
		using System;
		using System.Collections.Generic;
		using System.Security.Cryptography;
		using System.Text;
		using System.IO;

        /// <summary>
        /// DES加密
        /// </summary>
        /// <param name="toEncrypt">需要加密的字符串</param>
        /// <param name="key">8位密钥</param>
        /// <returns>加密后的字符串</returns>
        public static string Encrypt(string toEncrypt, string key, byte[] iv)
        {
            byte[] keyArray = System.Text.Encoding.UTF8.GetBytes(key);
            byte[] toEncryptArray = System.Text.Encoding.UTF8.GetBytes(toEncrypt);
            DESCryptoServiceProvider dES = new DESCryptoServiceProvider();
            dES.Key =Encoding.UTF8.GetBytes(key);
            dES.IV = iv;
            MemoryStream stream = new MemoryStream();
            CryptoStream cs = new CryptoStream(stream, dES.CreateEncryptor(), CryptoStreamMode.Write);
            cs.Write(toEncryptArray, 0, toEncryptArray.Length);
            cs.FlushFinalBlock();
            return Convert.ToBase64String(stream.ToArray());
        }

        /// <summary>
        /// DES解密
        /// </summary>
        /// <param name="toDecrypt">需要解密的内容</param>
        /// <param name="key">密钥</param>
        /// <param name="iv">加密向量</param>
        /// <returns></returns>
        public static string Decrypt(string toDecrypt, string key, byte[] iv)
        {
            byte[] keyArry = Encoding.UTF8.GetBytes(key);
            byte[] toDecryptArray = Convert.FromBase64String(toDecrypt);
            DESCryptoServiceProvider dES = new DESCryptoServiceProvider();
            dES.Key = Encoding.UTF8.GetBytes(key);
            dES.IV = iv;
            MemoryStream stream = new MemoryStream();
            CryptoStream cs = new CryptoStream(stream, dES.CreateDecryptor(), CryptoStreamMode.Write);
            cs.Write(toDecryptArray, 0, toDecryptArray.Length);
            cs.FlushFinalBlock();
            return System.Text.Encoding.UTF8.GetString(stream.ToArray());
        }
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
DES(Data Encryption Standard)是一种对称加密算法,用于保护计算机和网络中的数据安全。DES算法使用相同的密钥进行加密和解密操作。 首先,我们来讨论DES加密过程。在加密过程中,原始数据会被分成64位的数据块,并经过一系列复杂的置换、替代和混合等步骤,最终生成一个64位的密文数据块。加密过程中所使用的密钥也是64位的,通过子密钥的生成和迭代,将密钥与数据进行混合运算,从而实现加密操作。DES算法的强度在于它的迭代次数,通常会进行16轮迭代来确保数据的安全性。 接下来,我们来探讨DES的解密过程。在解密过程中,密文数据块会经过与加密过程相反的步骤,通过逆向置换、逆向替代和逆向混合等步骤,最终还原为原始的64位明文数据块。与加密过程类似,解密过程中使用的密钥也是相同的。通过迭代生成的子密钥,将密钥与密文数据块进行反向混合运算,实现解密操作。解密过程同样进行16轮迭代,以确保数据的正确性和完整性。 总之,DES算法是一种使用相同密钥进行加密和解密的对称加密算法。加密过程将原始数据分成64位数据块,并通过一系列复杂的步骤生成相应的密文数据块。解密过程则是将密文数据块经过相反的操作还原为原始的明文数据块。DES算法可以保护数据的机密性和安全性,广泛应用于计算机和网络领域。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值