/// <summary>
/// DES加密算法
/// </summary>
/// <param name="toEncrypt">要加密的16进制字符串</param>
/// <param name="_DESKey">16进制密钥</param>
/// <returns>加密后的结果</returns>
public string DESEncrypt(string toEncrypt, string _DESKey)
{
DESCryptoServiceProvider des = new DESCryptoServiceProvider(); //定义DES加密服务提供类
byte[] inputByte = strToToHexByte(toEncrypt); //将16进制的加密字符串转换为byte数组
byte[] key = strToToHexByte(_DESKey); //将16进制加密密匙转化为byte数组
des.Key = key; //加密密钥(必须为8字节)
des.IV = key; //暂时还未研究
des.Padding = PaddingMode.Zeros; //设置对称算法中的填充模式(很重要,不同的填充模式,结果的字节数就不同,结果也不相同)
des.Mode = CipherMode.ECB; //设置对称算法中的运算模式(很重要),不同的模式,加密出来的结果就不同
MemoryStream ms = new MemoryStream(); //创建其支持存储区为内存的流
CryptoStream cs = new CryptoStream(ms, des.CreateEncryptor(), CryptoStreamMode.Write);//定义将数据流链接到加密转换的流
cs.Write(inputByte, 0, inputByte.Length);
cs.FlushFinalBlock();
StringBuilder ret = new StringBuilder();
foreach (byte b in ms.ToArray()) //将字节流转换成字节数组
{
ret.AppendFormat("{0:X2}", b); //向可变字符串追加转换成十六进制数字符串的加密后byte数组
}
return ret.ToString();
}

/// <summary>
/// DES解密算法
/// </summary>
/// <param name="toDecrypt">要解密的16进制字符串</param>
/// <param name="_DESKey">16进制密钥</param>
/// <returns></returns>
public string DESDecrypt(string toDecrypt, string _DESKey)
{
DESCryptoServiceProvider des = new DESCryptoServiceProvider(); //定义DES加密服务提供类
byte[] inputByte = strToToHexByte(toDecrypt); //将16进制的解密字符串转换为byte数组
byte[] key = strToToHexByte(_DESKey); //将16进制加密密匙转化为byte数组
des.Key = key; //加密密钥(必须为8字节)
des.IV = key; //暂时还未研究
des.Padding = PaddingMode.Zeros; //设置对称算法中的填充模式(很重要,不同的填充模式,结果的字节数就不同,结果也不相同)
des.Mode = CipherMode.ECB; //设置对称算法中的运算模式(很重要),不同的模式,加密出来的结果就不同
MemoryStream ms = new MemoryStream(); //创建其支持存储区为内存的流
CryptoStream cs = new CryptoStream(ms, des.CreateDecryptor(), CryptoStreamMode.Write);//定义将数据流链接到加密转换的流
cs.Write(inputByte, 0, inputByte.Length);
cs.FlushFinalBlock();
StringBuilder ret = new StringBuilder();
foreach (byte b in ms.ToArray()) //将字节流转换成字节数组
{
ret.AppendFormat("{0:X2}", b); //向可变字符串追加转换成十六进制数字符串的加密后byte数组
}
return ret.ToString();
}

/// <summary>
/// 将16进制字符串转换成字节数组
/// </summary>
/// <param name="hexString">16进制字符串</param>
/// <returns>输出字节数组</returns>
private static byte[] strToToHexByte(string hexString)
{
byte[] returnBytes = new byte[hexString.Length / 2];
for (int i = 0; i < returnBytes.Length; i++)
returnBytes[i] = Convert.ToByte(hexString.Substring(i * 2, 2), 16);
return returnBytes;
}

.net中DES加密算法研究的更多相关文章

  1. android和.net webservice中的DES加密算法

    也是看了一堆的例子,本身并不会写加密算法,好在只要会用就行了,我们把在app中使用的参数加密,然后在.net端的webservice中进行解密,本身并没有什么问题,但是android下和.net下的d ...

  2. JAVA使用DES加密算法加密解密

    程序中使用了.properties文件作为参数配置文档,好处是灵活配置各项参数 一旦对数据库的一些参数进行了配置,势必涉及数据库的IP,端口,用户名和密码 properties文件全是unicode编 ...

  3. (iOS)Base64加密和DES加密、以及JAVA和iOS中DES加密统一性问题

    我们在项目中为了安全方面的考虑,通常情况下会选择一种加密方式对需要安全性的文本进行加密,而Base64加密和DES64加密是常用的加密算法.我记得我在前一个项目中使用的就是这两种加密算法的结合:Bas ...

  4. 浅谈DES加密算法

    一.DES加密算法介绍 1.要求密钥必须是8个字节,即64bit长度 2.因为密钥是byte[8] , 代表字符串也可以是非可见的字节,可以与Base64编码算法一起使用 3.加密.解密都需要通过字节 ...

  5. .NET中的加密算法总结(自定义加密Helper类续)

    1.1.1 摘要 相信许多人都使用过.NET提供的加密算法,而且在使用的过程我们必须了解每种加密算法的特点(对称或非对称,密钥长度和初始化向量等等).我也看到过很多人写过.NET中加密算法总结,但我发 ...

  6. 对称密码——DES加密算法

    前言 本篇博文将介绍对称密码算法中的DES密码的算法原理与代码实现(Java) DES算法原理 DES加密算法是对称加密算法(加密和解密使用同一个密钥)中的一种,DES也是分组密码,以64位为分组对明 ...

  7. des加密算法java&c#

    项目中用到的数据加密方式是ECB模式的DES加密得到的十六进制字符串.技术支持让写一个.net版的加密算法.这里做一下记录. java版: 16进制使用的是bouncycastle. import c ...

  8. DES加密算法的C++实现

    <信息安全技术>这门课又在讲 DES 加密算法了,以前用纯C写过一次,这次我用 C++ 重新写了一个,写篇文章以备后用.本文介绍了 DES 算法加密的大致步骤和整体流程. 一.DES算法原 ...

  9. 在.NET Core 里使用 BouncyCastle 的DES加密算法

    .NET Core上面的DES等加密算法要等到1.2 才支持,我们可是急需这个算法的支持,文章<使用 JavaScriptService 在.NET Core 里实现DES加密算法>需要用 ...

随机推荐

  1. Cordova-iOS SDK封装

    源码编译与制作静态库 下载cordova-ios源码,下载地址为:cordova-ios 解压后使用Xcode进行编译,编译选定模拟器和Generic iOS Device,cmd+B,编译成功(Dy ...

  2. [Hei.Captcha] Asp.Net Core 跨平台验证码实现

    写在前面 说起来比较丢脸.我们有个手机的验证码发送逻辑需要使用验证码,这块本来项目里面就有验证码绘制逻辑,.Net Framework的,使用的包是System.Drawing,我把这验证码绘制逻辑复 ...

  3. 彻底理解kubernetes CNI

    kubernetes各版本离线安装包 CNI接口很简单,特别一些新手一定要克服恐惧心里,和我一探究竟,本文结合原理与实践,认真读下来一定会对原理理解非常透彻. 环境介绍 我们安装kubernetes时 ...

  4. darknet是如何对数据集做resize的?

    在准备数据集时,darknet并不要求我们预先对图片resize到固定的size. darknet自动帮我们做了图像的resize. darknet训练前处理 本文所指的darknet版本:https ...

  5. Unity经典游戏教程之:弓之骑士

    版权声明: 本文原创发布于博客园"优梦创客"的博客空间(网址:http://www.cnblogs.com/raymondking123/)以及微信公众号"优梦创客&qu ...

  6. 学好C/C++编程,走遍天下都不怕

    C++这门语言从诞生到今天已经经历了将近30个年头.不可否认,它的学习难度都比其它语言较高.而它的学习难度,主要来自于它的复杂性.现在C++的使用范围比以前已经少了很多,java.C#.python等 ...

  7. hadoop安装解决之道

    # 壹.故障现象 ```xml Microsoft Windows [版本 10.0.18362.239] (c) 2019 Microsoft Corporation.保留所有权利. C:\User ...

  8. 以kaldi中的yesno为例谈谈transition

    在基于GMM-HMM的传统语音识别里,比音素(phone)更小的单位是状态(state).一般每个音素由三个状态组成,特殊的是静音(SIL)由五个状态组成.这里所说的状态就是指HMM里的隐藏的状态,而 ...

  9. Linux lsof工具介绍

    引言 在<Linux fuser工具介绍>一文中,与大家一起学习了fuser工具的使用方法."lsof"——list open files,lsof也是Linux下用于 ...

  10. 分析android studio的项目结构

    以最简单的工程为例子,工程名为随意乱打的Exp5,新建好工程后将项目结构模式换成android: 1.manifests AndroidManifest.xml:APP的配置信息 <?xml v ...