C#常用加密解密方法(DES加密解密)
在日常开发过程中,总会遇到需要加密解密的需求,这里我整理了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加密解密)相关推荐
- python des加密文件_Python DES加密解密方法 pyDes库 兼容中文
单纯记录一下Python中DES加密解密的使用方式直接看代码: 依赖pyDes库安装> pip install pyDes 约定秘钥 python和java 加密和解密联调,兼容中文字符串 Py ...
- 对称加密----AES和DES加密、解密
目前主流的加密方式有:(对称加密)AES.DES (非对称加密)RSA.DSA 调用AES/DES加密算法包最精要的就是下面两句话: Cipher cipher = Cipher.get ...
- des vue 加密解密_vue DES 加密
ECB模式 import cryptoJs from 'crypto-js' // DES加密 export const encryptDes = (message, key) => { var ...
- java和vb.net des加密_vb.net DES加密与解密
1.DES加密 Public Function EncryptDes(ByVal SourceStr As String, Optional ByVal myKey As String = " ...
- php ecb加密,PHP之DES加密解密算法类(ECB模式)(实例教程)
PHP中加密解密函数与DES加密解密的应用实例:<?php define('SMS_KEY', 'K0e5293b'); class DesUtil{ public function encry ...
- php 加密解密方法,php加密方法与解密方法
测试文件 test.php 1.加密方法: ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz 长度 $q1 .= 64_decode -> ...
- php 加密解密方法,PHP加密解密方法
PHP加密解密方法 2018-03-12 38 PHP加密和解密函数可以用来加密一些有用的字符串存放在数据库里,并且通过可逆解密字符串,该函数使用了base64和MD5加密和解密.function e ...
- react实现RSA加密解密、DES加密
前端实现RSA加密解密.DES解密,主要用到的包有jsencrypt.crypto-js 一.使用场景 需要在本地存储一些标志位,安全问题 用户登录密码的加密 二.加密代码 RSA加密 安装 npm ...
- java解密方法,java加密,解密方法
/** *AES加密解密工具类 *@author M-Y */ public class AESUtil { private static Logger log = LoggerFactory.get ...
- 各种加密解密函数(URL加密解密、sha1加密解密、des加密解密)
普通hash函数如md5.sha1.base64等都是不可逆函数.虽然我们利用php可以利用这些函数写出可逆函数来.但是跨语言时这类可逆函数非常难搞定.所以这时尽量使用AES DES RC4 Rabb ...
最新文章
- vue调用百度地图API输入提示示例下拉列表一直被触发问题
- 组策略管理——软件限制策略(5)
- 海康威视:增速超预期 调高盈利预测
- 使用 http-proxy 实现 SAP UI5 请求的代理重定向
- 面向对象命名空间、组合
- iOS input被键盘遮挡
- Overlay Surfaces (覆盖表面)
- ProcessBuilder执行bash脚本
- mysql数据库版本常用_推荐:经典版本常用MySQL的命令集锦_MySQL
- [转]Java程序员们最常犯的10个错误
- java求职简历建议
- css内联样式!important
- 基于物联网的温度采集系统(一):底层感知网络搭建
- Latex \TexStudio 设置数学符号
- 万有引力的意思_详细解释万有引力的本质 - 物理 - 小木虫 - 学术 科研 互动社区...
- 【Java WEB】Linux常用命令汇总
- JSPatch转换器:可直接将OC代码转换成JS代码
- 软件工程师资格认证,你合格吗?
- 一个渗透自学者的自述
- 为什么学习Python?数据给你八大理由