zoukankan
html css js c++ java
数据加密标准(DES)的C#实现(1)
/**/
/*
* 数据加密标准(DES)的C#实现(1)
*
* 采用随机的密钥Key和初始化向量IV加密
*
* 夏春涛 Email:xChuntao@163.com
* Blog:
http://bluesky521.cnblogs.com
* 运行环境:.net2.0 framework
*/
/**/
/*
* 关于DES加密中的初始化向量IV:
* 对于给定的密钥 k,不使用初始化向量的简单块密码将同一个纯文本输入块加密为
* 同一个密码文本输出块。如果您的纯文本流中有重复块,则您的密码文本流中也会
* 有重复块。如果未经授权的用户知道了您的纯文本块结构的任何信息,他们就可以
* 利用该信息来解密已知的密码文本块,并有可能重新获得您的密钥。为了防止这个
* 问题,前一个块中的信息被混合到下一个块的加密过程中。这样一来,两个相同的
* 纯文本块的输出就变得不一样了。由于此技术使用前一个块加密下一个块,因此需
* 要初始化向量来加密数据的第一个块。
*/
using
System;
using
System.Collections.Generic;
using
System.Text;
using
System.Security.Cryptography;
using
System.IO;
namespace
DES_App1
{
class
Program
{
static
void
Main(
string
[] args)
{
DESCryptoServiceProvider des_csp
=
new
DESCryptoServiceProvider();
string
str_plain_text
=
"
How are you?
"
;
Console.WriteLine(
"
原文:
"
+
str_plain_text);
string
str_cypher_text
=
Encrypt(str_plain_text, des_csp);
Console.WriteLine(
"
密文:
"
+
str_cypher_text);
Console.WriteLine(
"
解密:
"
+
Decrypt(str_cypher_text, des_csp));
Console.WriteLine(
"
本次密钥:
"
+
Convert.ToBase64String(des_csp.Key));
Console.WriteLine(
"
本次初始化向量:
"
+
Convert.ToBase64String(des_csp.IV));
Console.WriteLine();
}
//
加密一个明文字符串,返回一个Base64String密文字符串
//
SymmetricAlgorithm:表示所有对称算法的实现都必须从中继承的抽象基类
static
public
string
Encrypt(
string
PlainText, SymmetricAlgorithm des_csp)
{
MemoryStream ms
=
new
MemoryStream();
CryptoStream encStream
=
new
CryptoStream(ms, des_csp.CreateEncryptor(), CryptoStreamMode.Write);
StreamWriter sw
=
new
StreamWriter(encStream);
sw.WriteLine(PlainText);
sw.Close();
encStream.Close();
byte
[] buffer
=
ms.ToArray();
ms.Close();
string
str_cypher_text
=
Convert.ToBase64String(buffer);
return
str_cypher_text;
}
//
解密一个Base64String密文字符串,返回一个明文字符串
//
SymmetricAlgorithm:表示所有对称算法的实现都必须从中继承的抽象基类
static
public
string
Decrypt(
string
str_cypher_text, SymmetricAlgorithm des_csp)
{
byte
[] CypherText
=
Convert.FromBase64String(str_cypher_text);
MemoryStream ms
=
new
MemoryStream(CypherText);
CryptoStream encStream
=
new
CryptoStream(ms, des_csp.CreateDecryptor(), CryptoStreamMode.Read);
StreamReader sr
=
new
StreamReader(encStream);
string
val
=
sr.ReadLine();
sr.Close();
encStream.Close();
ms.Close();
return
val;
}
}
}
源码附件:
/Files/bluesky521/DES_Hash_Demo.rar
查看全文
相关阅读:
手机也需“绿色环保”,省电类APP或将成为“标配”?
Netty入门实例及分析
ios开发经常使用RGB色值
poj Kaka's Matrix Travels
C++ 继承体系中的名称覆盖
spring-framework-3.2.4与hibernate-release-4.3.5下使用HibernateDaoSupport抛出异常
Codeforces Round #131 Div1 B
URAL 1837. Isenbaev's Number (map + Dijkstra || BFS)
数据库升级代码学习
delphi:临界区对象TCriticalSection(Delphi) 与 TRtlCriticalSection 的区别
原文地址:https://www.cnblogs.com/SummerRain/p/1005556.html
最新文章
VS2019/VS2017怎么更改visual studio新建项目的默认路径
VS2019/VS2017设置默认管理员权限启动
(C#)Application.Exit()、Environment.Exit(0)区别
WinForm SetWindowPos窗口置顶使用说明
C#基于RabbitMQ实现客户端之间消息通讯实战演练
SVN更新报错问题(Please execute the 'Cleanup' command)
Linux+Nginx+Supervisor部署ASP.NET Core实操手册
ASP.NET Core托管和部署Linux实操演练手册
ASP.NET WebAPI数据传输安全HTTPS实战项目演练
Linux source命令(转)
热门文章
mvn常用插件目标
maven生命周期理解
Maven 使用了一个标准的目录结构和一个默认的构建生命周期。
利用mvn deploy命令上传包(转)
mybatis ${} sql注入
为什要使用预编译SQL?(转)
SQL Where in list 问题
java链表知识点总结
Java泛型中的标记符含义:
JAVA card 应用开发(二) 在项目添加APPLET
Copyright © 2011-2022 走看看