在日常开发过程中,总会遇到需要加密解密的需求,这里我整理了C#常用的加密解密方法分享给大家。

先看看加密的基本概念:

"加密",是一种限制对网络上传输数据的访问权的技术。原始数据(也称为明文,plaintext)被加密设备(硬件或软件)和密钥加密而产生的经过编码的数据称为密文(ciphertext)。将密文还原为原始明文的过程称为解密,它是加密的反向处理,但解密者必须利用相同类型的加密设备和密钥对密文进行解密。

加密的基本功能包括:

1. 防止不速之客查看机密的数据文件;

2. 防止机密数据被泄露或篡改;

3. 防止特权用户(如系统管理员)查看私人数据文件;

4. 使入侵者不能轻易地查找一个系统的文件。

一、本节摘要

本节主要分享DES加密解密:

DES,全称Data Encryption Standard,是一种对称加密算法。由于其安全性比较高(有限时间内,没有一种加密方法可以说是100%安全),很可能是最广泛的密钥系统(我们公司也在用,估计你们也有在用....),唯一一种方法可以破解该算法,那就是穷举法。

DES(Data Encryption Standard)和TripleDES是对称加密的两种实现。

DES和TripleDES基本算法一致,只是TripleDES算法提供的key位数更多,加密可靠性更高。

DES使用的密钥key为8字节,初始向量IV也是8字节。

TripleDES使用24字节的key,初始向量IV也是8字节。

两种算法都是以8字节为一个块进行加密,一个数据块一个数据块的加密,一个8字节的明文加密后的密文也是8字节。如果明文长度不为8字节的整数倍,添加值为0的字节凑满8字节整数倍。所以加密后的密文长度一定为8字节的整数倍。

二、源码分享

using System;
using System.Security.Cryptography;
using System.Text;
namespace Core.Common
{/// <summary>/// DES加密/解密类。/// </summary>public class DESEncrypt{public DESEncrypt(){          }#region ========加密======== /// <summary>/// 加密/// </summary>/// <param name="Text"></param>/// <returns></returns>public static string Encrypt(string Text) {return Encrypt(Text,"MARCOPRO");}/// <summary> /// 加密数据 /// </summary> /// <param name="Text"></param> /// <param name="sKey"></param> /// <returns></returns> public static string Encrypt(string Text,string sKey) { DESCryptoServiceProvider des = new DESCryptoServiceProvider(); byte[] inputByteArray; inputByteArray=Encoding.Default.GetBytes(Text); des.Key = ASCIIEncoding.ASCII.GetBytes(System.Web.Security.FormsAuthentication.HashPasswordForStoringInConfigFile(sKey, "md5").Substring(0, 8)); des.IV = ASCIIEncoding.ASCII.GetBytes(System.Web.Security.FormsAuthentication.HashPasswordForStoringInConfigFile(sKey, "md5").Substring(0, 8)); System.IO.MemoryStream ms=new System.IO.MemoryStream(); CryptoStream cs=new CryptoStream(ms,des.CreateEncryptor(),CryptoStreamMode.Write); cs.Write(inputByteArray,0,inputByteArray.Length); cs.FlushFinalBlock(); StringBuilder ret=new StringBuilder(); foreach( byte b in ms.ToArray()) { ret.AppendFormat("{0:X2}",b); } return ret.ToString(); } #endregion#region ========解密======== /// <summary>/// 解密/// </summary>/// <param name="Text"></param>/// <returns></returns>public static string Decrypt(string Text) {return Decrypt(Text, "MARCOPRO");}/// <summary> /// 解密数据 /// </summary> /// <param name="Text"></param> /// <param name="sKey"></param> /// <returns></returns> public static string Decrypt(string Text,string sKey) { DESCryptoServiceProvider des = new DESCryptoServiceProvider(); int len; len=Text.Length/2; byte[] inputByteArray = new byte[len]; int x,i; for(x=0;x<len;x++) { i = Convert.ToInt32(Text.Substring(x * 2, 2), 16); inputByteArray[x]=(byte)i; } des.Key = ASCIIEncoding.ASCII.GetBytes(System.Web.Security.FormsAuthentication.HashPasswordForStoringInConfigFile(sKey, "md5").Substring(0, 8)); des.IV = ASCIIEncoding.ASCII.GetBytes(System.Web.Security.FormsAuthentication.HashPasswordForStoringInConfigFile(sKey, "md5").Substring(0, 8)); System.IO.MemoryStream ms=new System.IO.MemoryStream(); CryptoStream cs=new CryptoStream(ms,des.CreateDecryptor(),CryptoStreamMode.Write); cs.Write(inputByteArray,0,inputByteArray.Length); cs.FlushFinalBlock(); return Encoding.Default.GetString(ms.ToArray()); } #endregion }
}

C#常用加密解密方法(DES加密解密)相关推荐

  1. python des加密文件_Python DES加密解密方法 pyDes库 兼容中文

    单纯记录一下Python中DES加密解密的使用方式直接看代码: 依赖pyDes库安装> pip install pyDes 约定秘钥 python和java 加密和解密联调,兼容中文字符串 Py ...

  2. 对称加密----AES和DES加密、解密

    目前主流的加密方式有:(对称加密)AES.DES        (非对称加密)RSA.DSA 调用AES/DES加密算法包最精要的就是下面两句话: Cipher cipher = Cipher.get ...

  3. des vue 加密解密_vue DES 加密

    ECB模式 import cryptoJs from 'crypto-js' // DES加密 export const encryptDes = (message, key) => { var ...

  4. java和vb.net des加密_vb.net DES加密与解密

    1.DES加密 Public Function EncryptDes(ByVal SourceStr As String, Optional ByVal myKey As String = " ...

  5. php ecb加密,PHP之DES加密解密算法类(ECB模式)(实例教程)

    PHP中加密解密函数与DES加密解密的应用实例:<?php define('SMS_KEY', 'K0e5293b'); class DesUtil{ public function encry ...

  6. php 加密解密方法,php加密方法与解密方法

    测试文件 test.php 1.加密方法: ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz 长度 $q1 .= 64_decode -> ...

  7. php 加密解密方法,PHP加密解密方法

    PHP加密解密方法 2018-03-12 38 PHP加密和解密函数可以用来加密一些有用的字符串存放在数据库里,并且通过可逆解密字符串,该函数使用了base64和MD5加密和解密.function e ...

  8. react实现RSA加密解密、DES加密

    前端实现RSA加密解密.DES解密,主要用到的包有jsencrypt.crypto-js 一.使用场景 需要在本地存储一些标志位,安全问题 用户登录密码的加密 二.加密代码 RSA加密 安装 npm ...

  9. java解密方法,java加密,解密方法

    /** *AES加密解密工具类 *@author M-Y */ public class AESUtil { private static Logger log = LoggerFactory.get ...

  10. 各种加密解密函数(URL加密解密、sha1加密解密、des加密解密)

    普通hash函数如md5.sha1.base64等都是不可逆函数.虽然我们利用php可以利用这些函数写出可逆函数来.但是跨语言时这类可逆函数非常难搞定.所以这时尽量使用AES DES RC4 Rabb ...

最新文章

  1. vue调用百度地图API输入提示示例下拉列表一直被触发问题
  2. 组策略管理——软件限制策略(5)
  3. 海康威视:增速超预期 调高盈利预测
  4. 使用 http-proxy 实现 SAP UI5 请求的代理重定向
  5. 面向对象命名空间、组合
  6. iOS input被键盘遮挡
  7. Overlay Surfaces (覆盖表面)
  8. ProcessBuilder执行bash脚本
  9. mysql数据库版本常用_推荐:经典版本常用MySQL的命令集锦_MySQL
  10. [转]Java程序员们最常犯的10个错误
  11. java求职简历建议
  12. css内联样式!important
  13. 基于物联网的温度采集系统(一):底层感知网络搭建
  14. Latex \TexStudio 设置数学符号
  15. 万有引力的意思_详细解释万有引力的本质 - 物理 - 小木虫 - 学术 科研 互动社区...
  16. 【Java WEB】Linux常用命令汇总
  17. JSPatch转换器:可直接将OC代码转换成JS代码
  18. 软件工程师资格认证,你合格吗?
  19. 一个渗透自学者的自述
  20. 为什么学习Python?数据给你八大理由

热门文章

  1. oracle函数自定义日历周获取周数
  2. cartographer如何使用2个反光柱子作为一个landmark
  3. HTML:图片超链接应用
  4. 类与类之间的关系之——继承
  5. ZOJ3775:?(_o)!
  6. 上网/游戏/看剧太慢了:瞧瞧是不是运营商干的
  7. 让客户实现 AI 算力“自由”,博云与趋动科技完成算力调度容器化验证
  8. WPF 触摸屏应用需要了解的知识
  9. 微信的充值和提现是什么意思
  10. matlab高光谱图像分类识别