这个加密类是与java写的DES加密不同时,自己写的,最后与Java的加密相同了,解决了加密后不同的问题。

可以直接调用里面的加密和解密的方法。

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web; using System.Text;
using System.Security.Cryptography;
using System.IO; namespace EallNum.Helper
{ public class FI_DesTools
{
private FI_DesTools()
{
} private static string key = "×××××"; /// <summary>
/// 对称加密解密的密钥
/// </summary>
public static string Key
{
get
{
return key;
}
set
{
key = value;
}
} /// <summary>
/// DES加密
/// </summary>
/// <param name="encryptString"></param>
/// <returns></returns>
public static string DesEncrypt(string strEncryptString)
{
StringBuilder strRetValue = new StringBuilder(); try
{
byte[] keyBytes = Encoding.UTF8.GetBytes(key.Substring(, ));
byte[] keyIV = keyBytes;
byte[] inputByteArray = Encoding.UTF8.GetBytes(strEncryptString);
DESCryptoServiceProvider provider = new DESCryptoServiceProvider(); provider.Mode = CipherMode.ECB;//兼容其他语言的Des加密算法
provider.Padding = PaddingMode.Zeros;//自动补0 MemoryStream mStream = new MemoryStream();
CryptoStream cStream = new CryptoStream(mStream, provider.CreateEncryptor(keyBytes, keyIV), CryptoStreamMode.Write);
cStream.Write(inputByteArray, , inputByteArray.Length);
cStream.FlushFinalBlock(); //不使用base64编码
//return Convert.ToBase64String(mStream.ToArray()); //组织成16进制字符串
foreach (byte b in mStream.ToArray())
{
strRetValue.AppendFormat("{0:X2}", b);
}
}
catch (Exception e)
{
Console.WriteLine(e);
} return strRetValue.ToString();
} /// <summary>
/// DES解密
/// </summary>
/// <param name="decryptString"></param>
/// <returns></returns>
public static string DesDecrypt(string strDecryptString)
{
string strRetValue = ""; try
{
byte[] keyBytes = Encoding.UTF8.GetBytes(key.Substring(, ));
byte[] keyIV = keyBytes; //不使用base64解码
//byte[] inputByteArray = Convert.FromBase64String(decryptString); //16进制转换为byte字节
byte[] inputByteArray = new byte[strDecryptString.Length / ];
for (int x = ; x < strDecryptString.Length / ; x++)
{
int i = (Convert.ToInt32(strDecryptString.Substring(x * , ), ));
inputByteArray[x] = (byte)i;
} DESCryptoServiceProvider provider = new DESCryptoServiceProvider(); provider.Mode = CipherMode.ECB;//兼容其他语言的Des加密算法
provider.Padding = PaddingMode.Zeros;//自动补0 MemoryStream mStream = new MemoryStream();
CryptoStream cStream = new CryptoStream(mStream, provider.CreateDecryptor(keyBytes, keyIV), CryptoStreamMode.Write);
cStream.Write(inputByteArray, , inputByteArray.Length);
cStream.FlushFinalBlock(); //需要去掉结尾的null字符
//strRetValue = Encoding.UTF8.GetString(mStream.ToArray());
strRetValue = Encoding.UTF8.GetString(mStream.ToArray()).TrimEnd('\0');
}
catch (Exception e)
{
Console.WriteLine(e);
} return strRetValue;
}
}
}

参考页面:http://qingqingquege.cnblogs.com/p/5933752.html

C# DES加密类,16位的加密。的更多相关文章

  1. 16位的MD5加密和32位MD5加密的区别

    16位的MD5加密和32位MD5加密的区别 MD5加密后所得到的通常是32位的编码,而在不少地方会用到16位的编码它们有什么区别呢?16位加密就是从32位MD5散列中把中间16位提取出来!其实破解16 ...

  2. MD5、SHA1加密java 16位32位

    MD5.SHA1加密java 16位32位 import java.math.BigInteger; import java.security.MessageDigest; public class ...

  3. Java Android 32位16位 MD5加密

    // md5加密 32位小写 private String Md5(String sourceStr) { String result = ""; try { MessageDig ...

  4. 字符串的MD5的32位加密和16位加密

    import java.security.MessageDigest; import java.util.Locale; public class MD5Util { public static St ...

  5. 阿里云虚拟主机MYSQL加密长度16位变61位

    将网站迁移到阿里云虚拟主机后, 用户登录都提供密码错误, 一查询才发现MYSQL PASSWORD加密结果不致, 只有16位, 解决办法,在执行PASSWORD查询前,执行set old_passwo ...

  6. JMeter-Eclipse添加自定义函数 MD5加密 32位和16位

    最近公司的接口都是MD5  16位加密,所以要使用加密功能. 之前也做过加密,因为用的比较少,所以是写了一个加密方法,导出JAR包,调用的.用起来需要很多设置,并且换算效率也不高.听前同事说,jmet ...

  7. php实现MD5加密16位(不要默认的32位)

    使用substr函数截取: substr(md5("admin"),8,16); // 16位MD5加密 md5("admin"); // 32位MD5加密

  8. .NET Core MD5加密 32位和16位

    public class MD5Help { //此代码示例通过创建哈希字符串适用于任何 MD5 哈希函数 (在任何平台) 上创建 32 个字符的十六进制格式哈希字符串官网案例改编 /// <s ...

  9. C#安全加密类

    using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.S ...

随机推荐

  1. 装B命令行,常用Windows命令

    winver检查Windows版本 dxdiag检查DirectX信息 gpedit.msc 组策略   regedit.exe 注册表 Msconfig.exe 系统配置实用程序  lusrmgr. ...

  2. 【js高程学习笔记】Object类型

    创建一组Object的实例的方式有两种: 方法一: var person = new Object(); person.name = '团子'; person.race = '猫'; person.s ...

  3. HFun.快速开发平台(四)=》自定义列表实例(请求参数的处理)

    上编自定义列表描述了自定义列表的基本实现功能,本此记录列表的请求过程. 个人比较喜欢对参数进行对象化,方便后续人维护及查看,先上代码: /******************************* ...

  4. 几个常用内核函数(《Windows内核情景分析》)

    参考:<Windows内核情景分析> 0x01  ObReferenceObjectByHandle 这个函数从句柄得到对应的内核对象,并递增其引用计数. NTSTATUS ObRefer ...

  5. android spf中存list<string>

    private void setSpfList() { final SharedPreferences mSharedPreferences = getPreferences(Context.MODE ...

  6. python的迭代器

    迭代器 我们已经知道,可以直接作用于for循环的数据类型有以下几种: 一类是集合数据类型,如list.tuple.dict.set.str等: 一类是generator,包括生成器和带yield的ge ...

  7. tensorFlow小结

    1,才云科技的书 <实战G深度学习框架>是一本好书,我的练习基本上都在其示例上运行,网上查看的示例都类似. 2,windows下安装了anaconda,采用spyder来运行python ...

  8. 使用Pretues仿真Arduino驱动步进电机

    这几天想做一个给金鱼自动喂食的装置,所以学习了下如何操控步进电机,现在做个记录. 使用Pretues仿真Arduino的话,可以参考:http://www.geek-workshop.com/thre ...

  9. python小白的自述

    python语言作为目前受用面比较广泛的一种语言,具有简单易学,功能强大的特点.初次接触python完全是由于好奇心,正是因为python的出现,才让我觉得编程不是那么的神秘了.不过作为一个编程小白来 ...

  10. L2-014 列车调度 (25 分)

    L2-014 列车调度 (25 分)   火车站的列车调度铁轨的结构如下图所示. 两端分别是一条入口(Entrance)轨道和一条出口(Exit)轨道,它们之间有N条平行的轨道.每趟列车从入口可以选择 ...