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
查看全文
相关阅读:
JPA的一对一映射
JPA的查询语言—JPQL的命名查询@NamedQuery
JPA的persistence.xml文件
JPA的主键产生策略
JPA的查询语言—JPQL的简单查询
Oracle Flashback救急了一回
JPA的实体
JPA的一对多映射(双向)
JPA的一对多映射(单向)
MySQL 主从同步操作文档
原文地址:https://www.cnblogs.com/SummerRain/p/1005556.html
最新文章
ZOJ 3613 Wormhole Transport
POJ 2391 Ombrophobic Bovines
UVA 12297 Super Poker
HDU 4085 Peach Blossom Spring
SPOJ 4556 Think I will Buy Me a Football Team
CF 152E Garden
HDU 3311 Dig The Wells
SPOJ 4568 Rotating Rings
POJ 2699 The Maximum Number of Strong Kings
几种差的区别
热门文章
程辐射
世界主要遥感卫星
如何用Word编辑参考文献
经纬度生成图层
ENVI和ERDAS中自定义坐标系的方法
flaash大气校正
线性波谱分离
国内主要遥感期刊投稿信息
ArcGIS 影像进行校正与配准的过程
JPA的多对多映射
Copyright © 2011-2022 走看看