DES加密解密帮助类
- public class DESCrypto
- {
- /// <summary>
- /// 初始化des实例秘钥及向量
- /// </summary>
- /// <param name="key"></param>
- /// <returns></returns>
- private static DESCryptoServiceProvider InitDESInstance(string key)
- {
- DESCryptoServiceProvider des = new DESCryptoServiceProvider();
- byte[] salt = new byte[] { 0x0A, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0xF1 };
- byte[] keyByte = Encoding.UTF8.GetBytes(key);
- Rfc2898DeriveBytes rfcKey = new Rfc2898DeriveBytes(keyByte, salt, );
- Rfc2898DeriveBytes rfcIv = new Rfc2898DeriveBytes("", salt, );
- des.Key = rfcKey.GetBytes();
- des.IV = rfcIv.GetBytes();
- return des;
- }
- #region 基于Base64的加密解密(不其他格式的加解密方法配合使用)
- /// <summary>
- /// 基于Base64
- /// </summary>
- /// <param name="plaintext"></param>
- /// <param name="key"></param>
- /// <returns></returns>
- public static string DESEncryptBase64(string plaintext,string key)
- {
- DESCryptoServiceProvider des = InitDESInstance(key);
- byte[] dataByteArray = Encoding.UTF8.GetBytes(plaintext);
- string ciphertext = "";
- using (MemoryStream ms = new MemoryStream())
- using (CryptoStream cs = new CryptoStream(ms, des.CreateEncryptor(), CryptoStreamMode.Write))
- {
- cs.Write(dataByteArray, , dataByteArray.Length);
- cs.FlushFinalBlock();
- ciphertext = Convert.ToBase64String(ms.ToArray());
- }
- return ciphertext;
- }
- /// <summary>
- /// 基于Base64
- /// </summary>
- /// <param name="encrypt"></param>
- /// <param name="key"></param>
- /// <returns></returns>
- public static string DESDecryptBase64(string encrypt, string key)
- {
- DESCryptoServiceProvider des = InitDESInstance(key);
- byte[] dataByteArray = Convert.FromBase64String(encrypt);
- using (MemoryStream ms = new MemoryStream())
- using (CryptoStream cs = new CryptoStream(ms, des.CreateDecryptor(), CryptoStreamMode.Write))
- {
- cs.Write(dataByteArray, , dataByteArray.Length);
- cs.FlushFinalBlock();
- return Encoding.UTF8.GetString(ms.ToArray());
- }
- }
- #endregion
- #region 基于2位十六进制格式的加密解密(不其他格式的加解密方法配合使用)
- /// <summary>
- /// 加密
- /// </summary>
- /// <param name="plaintext">明文</param>
- /// <param name="key"></param>
- /// <returns></returns>
- public static string DESEncrypt(string plaintext, string key)
- {
- DESCryptoServiceProvider des = InitDESInstance(key);
- StringBuilder sb = new StringBuilder();
- byte[] dataByteArray = Encoding.UTF8.GetBytes(plaintext);
- string ciphertext = "";
- using (MemoryStream ms = new MemoryStream())
- using (CryptoStream cs = new CryptoStream(ms, des.CreateEncryptor(), CryptoStreamMode.Write))
- {
- cs.Write(dataByteArray, , dataByteArray.Length);
- cs.FlushFinalBlock();
- //输出加密文本
- foreach (byte b in ms.ToArray())
- {
- sb.AppendFormat("{0:X2}", b);
- }
- ciphertext = sb.ToString();
- }
- return ciphertext;
- }
- /// <summary>
- /// 解密
- /// </summary>
- /// <param name="ciphertext">密文</param>
- /// <param name="key"></param>
- /// <returns></returns>
- public static string DESDecrypt(string ciphertext, string key)
- {
- DESCryptoServiceProvider des = InitDESInstance(key);
- byte[] dataByteArray = new byte[ciphertext.Length / ];
- for (int x = ; x < ciphertext.Length / ; x++)
- {
- int i = (Convert.ToInt32(ciphertext.Substring(x * , ), ));
- dataByteArray[x] = (byte)i;
- }
- using (MemoryStream ms = new MemoryStream())
- using (CryptoStream cs = new CryptoStream(ms, des.CreateDecryptor(), CryptoStreamMode.Write))
- {
- cs.Write(dataByteArray, , dataByteArray.Length);
- cs.FlushFinalBlock();
- return Encoding.UTF8.GetString(ms.ToArray());
- }
- }
- #endregion
- #region 文件加密解密(不其他格式的加解密方法配合使用)
- /// <summary>
- /// 加密文件
- /// </summary>
- /// <param name="sourceFile">文件的物理路径</param>
- /// <param name="encryptFile">文件的物理路径</param>
- /// <param name="key"></param>
- public static void DESEncryptFile(string sourceFile, string encryptFile, string key)
- {
- if (string.IsNullOrEmpty(sourceFile) || string.IsNullOrEmpty(encryptFile)||!File.Exists(sourceFile)) return;
- DESCryptoServiceProvider des = InitDESInstance(key);
- using (FileStream sourceStream = new FileStream(sourceFile, FileMode.Open, FileAccess.Read))
- using (FileStream encryptStream = new FileStream(encryptFile, FileMode.Create, FileAccess.Write))
- {
- byte[] dataByteArray = new byte[sourceStream.Length];
- sourceStream.Read(dataByteArray, , dataByteArray.Length);
- using (CryptoStream cs = new CryptoStream(encryptStream, des.CreateEncryptor(), CryptoStreamMode.Write))
- {
- cs.Write(dataByteArray, , dataByteArray.Length);
- cs.FlushFinalBlock();
- }
- }
- }
- /// <summary>
- /// 解密文件
- /// </summary>
- /// <param name="encryptFile">文件的物理路径</param>
- /// <param name="decryptFile">文件的物理路径</param>
- /// <param name="key"></param>
- public static void DESDecryptFile(string encryptFile, string decryptFile, string key)
- {
- if (string.IsNullOrEmpty(encryptFile) || string.IsNullOrEmpty(decryptFile) || !File.Exists(encryptFile))return;
- DESCryptoServiceProvider des = InitDESInstance(key);
- using (FileStream encryptStream = new FileStream(encryptFile, FileMode.Open, FileAccess.Read))
- using (FileStream decryptStream = new FileStream(decryptFile, FileMode.Create, FileAccess.Write))
- {
- byte[] dataByteArray = new byte[encryptStream.Length];
- encryptStream.Read(dataByteArray, , dataByteArray.Length);
- using (CryptoStream cs = new CryptoStream(decryptStream, des.CreateDecryptor(), CryptoStreamMode.Write))
- {
- cs.Write(dataByteArray, , dataByteArray.Length);
- cs.FlushFinalBlock();
- }
- }
- }
- /// <summary>
- /// 加密文本并输出到文件
- /// </summary>
- /// <param name="plaintext"></param>
- /// <param name="FileName">文件的物理路径</param>
- /// <param name="Key"></param>
- public static void DESEncryptTextToFile(string plaintext, string FileName, string key)
- {
- if (string.IsNullOrEmpty(FileName)) return;
- DESCryptoServiceProvider des = InitDESInstance(key);
- byte[] dataByteArray = Encoding.UTF8.GetBytes(plaintext);
- using (FileStream fStream = File.Open(FileName, FileMode.Create))
- using (CryptoStream cStream = new CryptoStream(fStream, des.CreateEncryptor(), CryptoStreamMode.Write))
- {
- cStream.Write(dataByteArray, , dataByteArray.Length);
- cStream.FlushFinalBlock();
- }
- }
- /// <summary>
- /// 解密文件中的密文并返回
- /// </summary>
- /// <param name="FileName"></param>
- /// <param name="Key"></param>
- /// <returns></returns>
- public static string DESDecryptTextFromFile(string FileName, string key)
- {
- if (string.IsNullOrEmpty(FileName)||!File.Exists(FileName)) return "";
- DESCryptoServiceProvider des = InitDESInstance(key);
- using (FileStream fStream = File.Open(FileName, FileMode.OpenOrCreate))
- using (CryptoStream cStream = new CryptoStream(fStream, des.CreateDecryptor(), CryptoStreamMode.Read))
- using (StreamReader sReader = new StreamReader(cStream))
- {
- string val = sReader.ReadToEnd();
- return val;
- }
- }
- #endregion
- }
Tips:参考MSDN整理编写,比较全面。
DES加密解密帮助类的更多相关文章
- des 加密解密工具类
最近在做des的双对称加密解密,特此记录一下. des对称加密,是一种比较传统的加密方式,其加密运算.解密运算使用的是同样的密钥,信息的发送者和信息的接收者在进行信息的传输与处理时,必须共同持有该密码 ...
- MD5&&DES加密解密帮助类
public class _MD5_NETCore加密解密 { /// <summary> /// 加密 /// </summary> /// <param name=& ...
- C#获取CPU与网卡硬盘序列号及Base64和DES加密解密操作类
public class RegisterHelp { /// <summary> /// CPU /// </summary> /// <returns>< ...
- 【DES加密解密】 C#&JAVA通用
DES加密解密 C# Code /// <summary> /// DES加密解密帮助类 /// </summary> public static class DESHelpe ...
- 一个java的DES加密解密类转换成C#
一个java的des加密解密代码如下: //package com.visionsky.util; import java.security.*; //import java.util.regex.P ...
- DES加密解密
加密后生成Base64字符串,并去除'='字符. 加密后替换掉'+',这样加密后的字符串可以作为url参数传递. using System; using System.IO; using System ...
- C# MD5加密解密帮助类
/// <summary> /// MD5加密解密帮助类 /// </summary> public static class DESHelper { ...
- 各种加密解密函数(URL加密解密、sha1加密解密、des加密解密)
原文:各种加密解密函数(URL加密解密.sha1加密解密.des加密解密) 普通hash函数如md5.sha1.base64等都是不可逆函数.虽然我们利用php可以利用这些函数写出可逆函数来.但是跨语 ...
- DES加密解密与AES加密解密
随着开发时间的变长,当初认为比较难的东西,现在渐渐也就变的不那么难了!特别对于一些经常很少使用的类,时间长了之后渐渐就陌生了.所以在这里写一些日后可能会用到的加密与解密. 一.AES加密算法和DES加 ...
随机推荐
- ASP.NET MVC+EF框架+EasyUI实现权限管理系列(14)-主框架搭建
原文:ASP.NET MVC+EF框架+EasyUI实现权限管理系列(14)-主框架搭建 ASP.NET MVC+EF框架+EasyUI实现权限管系列 (开篇) (1):框架搭建 (2 ...
- javascript利用map,every,filter,some,reduce,sort对数组进行最优化处理
案例: var scoresTable=[ {id:11,name:"小张",score:80}, {id:22,name:"小王",score:95}, {i ...
- uva 11354 - Bond(树链拆分)
题目链接:uva 11354 - Bond 题目大意:给定一张图.每次询问两个节点路径上进过边的危急值的最大值的最小值. 解题思路:首先建立最小生成数,然后依据这棵树做树链剖分. #include & ...
- 内置在虚拟机上64位操作系统:该主机支持 Intel VT-x,但 Intel VT-x 残
VT-Virtual Technology. 在这里特别说一下:虚拟64位操作系统,须要特别在BIOS中打开VT支持.怎样提示:此主机不支持Intel VT-x,则不可能虚拟出64位系统. 当提示:此 ...
- 浅谈 js 字符串之神奇的转义
原文:浅谈 js 字符串之神奇的转义 字符串在js里是非常常用的,但是你真的了解它么?翻阅<MDN String>就可以了解它的常见用法了,开门见山的就让你了解了字符串是怎么回事. 'st ...
- 【高德地图API】如何制作自己的旅游地图?
原文:[高德地图API]如何制作自己的旅游地图? “旅行的梦想并不遥远,只要一颗流浪四方的心.”——唐人立. 最早认识唐人立的时候,他还是大二的学生.他独自完成了“南京20年规划地图”.几年前,他完成 ...
- 【百度地图API】关于如何进行城市切换的三种方式
原文:[百度地图API]关于如何进行城市切换的三种方式 摘要:本文介绍了三种切换城市的方式:查询城市.城市列表和显示城市轮廓. ------------------------------------ ...
- sql server 辅助工具
sql Prompt 智能感知, 也是需要注册机. 效果如图: 这里最好改下:
- What is HHVM?
What is HHVM? HHVM is an open-source virtual machine designed for executing programs written in Hack ...
- openstack shelve/unshelve/stop浅析
声明: 本博客欢迎转发,但请保留原作者信息! 博客地址:http://blog.csdn.net/halcyonbaby 内容系本人学习.研究和总结,如有雷同,实属荣幸! stop的虚拟机仅仅是将虚拟 ...