C#DES加密

DES是对称加密,原理去网上查,很详细

                public String ToDES(string encryptString)
                {

            String key="abcdefgh";

           //密钥

            byte[] keyBytes = Encoding.UTF8.GetBytes(key);

            //向量,防止原文中相同的明文部分,加密后也相同
            byte[] keyIV = keyBytes;
            byte[] inputByteArray = Encoding.UTF8.GetBytes(encryptString);
            DESCryptoServiceProvider provider = new DESCryptoServiceProvider();
            MemoryStream mStream = new MemoryStream();
            CryptoStream cStream = new CryptoStream(mStream, provider.CreateEncryptor(keyBytes, keyIV), CryptoStreamMode.Write);
            cStream.Write(inputByteArray, 0, inputByteArray.Length);
            cStream.FlushFinalBlock();
            return Convert.ToBase64String(mStream.ToArray());
                }

 

               public String FromDES(string decryptString)

               {

            String key="abcdefgh";

            byte[] keyBytes = Encoding.UTF8.GetBytes(key);

            byte[] keyIV = keyBytes;
            byte[] inputByteArray = Convert.FromBase64String(decryptString);
            DESCryptoServiceProvider provider = new DESCryptoServiceProvider();
            MemoryStream mStream = new MemoryStream();
            CryptoStream cStream = new CryptoStream(mStream, provider.CreateDecryptor(keyBytes, keyIV), CryptoStreamMode.Write);
            cStream.Write(inputByteArray, 0, inputByteArray.Length);
            cStream.FlushFinalBlock();
            return Encoding.UTF8.GetString(mStream.ToArray());

               }

 

 

现在随着计算机性能的提高,简单的DES加密容易被破解,现在普遍使用三重DES加密,原理是一样的,

使用 168 位的密钥对资料进行三次加密的一种机制;它通常(但非始终)提供极其强大的安全性。如果三个 56 位的子元素都相同,则三重 DES 向后兼容 DES.

在C#中使用TripleDESCryptoServiceProvider tdes = new TripleDESCryptoServiceProvider();进行三重DES加密,其他一样。

尽管提供的引用涉及数字信号处理库 DSP Master[^1],但它与 DES 加密无关。以下是关于 C# 中实现 DES 加密的相关信息。 DES(Data Encryption Standard)是一种对称加密算法,在 .NET 平台中有内置支持。可以利用 `System.Security.Cryptography` 命名空间中的类来轻松实现 DES 加密和解密功能。 下面是一个完整的 C# 实现示例: ### C# DES 加密与解密实现 #### 加密方法 ```csharp using System; using System.Text; using System.Security.Cryptography; public class DesEncryptionExample { public static string Encrypt(string input, string key) { using (DESCryptoServiceProvider des = new DESCryptoServiceProvider()) { byte[] inputBytes = Encoding.UTF8.GetBytes(input); byte[] keyBytes = GetValidKey(Encoding.UTF8.GetBytes(key)); des.Key = keyBytes; // 设置密钥 des.IV = keyBytes; // 初始化向量(IV),通常设置为与密钥相同 using (var encryptor = des.CreateEncryptor()) { byte[] encryptedBytes = encryptor.TransformFinalBlock(inputBytes, 0, inputBytes.Length); return Convert.ToBase64String(encryptedBytes); // 返回 Base64 编码字符串 } } } private static byte[] GetValidKey(byte[] originalKey) { if (originalKey.Length != 8) // DES 密钥长度必须为 8 字节 { Array.Resize(ref originalKey, 8); } return originalKey; } } ``` #### 解密方法 ```csharp public static string Decrypt(string cipherText, string key) { using (DESCryptoServiceProvider des = new DESCryptoServiceProvider()) { byte[] cipherBytes = Convert.FromBase64String(cipherText); byte[] keyBytes = GetValidKey(Encoding.UTF8.GetBytes(key)); des.Key = keyBytes; des.IV = keyBytes; using (var decryptor = des.CreateDecryptor()) { byte[] decryptedBytes = decryptor.TransformFinalBlock(cipherBytes, 0, cipherBytes.Length); return Encoding.UTF8.GetString(decryptedBytes); } } } ``` 以上代码实现了基本的 DES 加密和解密逻辑。需要注意的是,DES 的安全性较低,建议在实际应用中考虑更安全的替代方案,如 AES[^2]。 --- ### 注意事项 - **密钥长度**:DES 要求密钥长度固定为 8 字节。如果输入的密钥不符合此要求,则需要调整其大小。 - **初始化向量 (IV)**:为了增强加密的安全性,推荐使用随机生成的 IV,并将其附加到加密数据中以便后续解密操作。 - **编码方式**:由于二进制数据难以存储或传输,因此常用 Base64 对加密后的字节数组进行编码。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值