zoukankan
html css js c++ java
数据加密标准(DES)的C#实现(4)
/**/
/*
* 数据加密标准(DES)的C#实现(4)
*
* 采用自定义的密钥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_App4
{
class
Program
{
static
void
Main(
string
[] args)
{
string
str_plain_text
=
"
How are you?
"
;
//
原文
Console.WriteLine(
"
原文:
"
+
str_plain_text);
string
KEY_64
=
"
a4G-8=Jk
"
;
//
必须是8个字符(64Bit)
string
IV_64
=
"
JKbN=5[?
"
;
//
必须8个字符(64Bit)
Console.WriteLine(
"
密钥:
"
+
KEY_64);
Console.WriteLine(
"
初始化向量:
"
+
IV_64);
//
----
string
str_cypher_text
=
Encrypt(str_plain_text, KEY_64, IV_64);
Console.WriteLine(
"
密文:
"
+
str_cypher_text);
Console.WriteLine(
"
解密:
"
+
Decrypt(str_cypher_text, KEY_64, IV_64) );
Console.WriteLine();
}
static
public
string
Encrypt(
string
PlainText,
string
KEY_64,
string
IV_64)
{
byte
[] byKey
=
System.Text.ASCIIEncoding.ASCII.GetBytes(KEY_64);
byte
[] byIV
=
System.Text.ASCIIEncoding.ASCII.GetBytes(IV_64);
DESCryptoServiceProvider cryptoProvider
=
new
DESCryptoServiceProvider();
int
i
=
cryptoProvider.KeySize;
MemoryStream ms
=
new
MemoryStream();
CryptoStream cst
=
new
CryptoStream(ms, cryptoProvider.CreateEncryptor(byKey, byIV), CryptoStreamMode.Write);
StreamWriter sw
=
new
StreamWriter(cst);
sw.Write(PlainText);
sw.Flush();
cst.FlushFinalBlock();
sw.Flush();
return
Convert.ToBase64String(ms.GetBuffer(),
0
, (
int
)ms.Length);
}
static
public
string
Decrypt(
string
CypherText,
string
KEY_64,
string
IV_64)
{
byte
[] byKey
=
System.Text.ASCIIEncoding.ASCII.GetBytes(KEY_64);
byte
[] byIV
=
System.Text.ASCIIEncoding.ASCII.GetBytes(IV_64);
byte
[] byEnc;
try
{
byEnc
=
Convert.FromBase64String(CypherText);
}
catch
{
return
null
;
}
DESCryptoServiceProvider cryptoProvider
=
new
DESCryptoServiceProvider();
MemoryStream ms
=
new
MemoryStream(byEnc);
CryptoStream cst
=
new
CryptoStream(ms, cryptoProvider.CreateDecryptor(byKey, byIV), CryptoStreamMode.Read);
StreamReader sr
=
new
StreamReader(cst);
return
sr.ReadToEnd();
}
}
}
源码附件:
/Files/bluesky521/DES_Hash_Demo.rar
查看全文
相关阅读:
完美对接海康、大华、华为等等设备的Onvif/RTSP流媒体服务全终端无插件直播-本地安装启动
LiveQing高性能RTMP流媒体服务器软件-支持直播、云端录像存储
LiveQing全新升级的RTMP流媒体服务器支持HLS(m3u8)、RTMP、HTTP-FLV高性能分发
LiveQing高性能RTMP、FLV、HLS流媒体服务器软件-支持与企业MySQL数据库对接
视频平台、NVR、摄像头通过GB28181接入实现WEB分屏播放以及大屏展示
视频流媒体服务WEB播放器集成使用
GB28181平台实现,支持摄像头公网WEB端直播
GB28181平台安装部署过程
element-UI之form表单数字值的校验
element-UI之表单校验ref标签
原文地址:https://www.cnblogs.com/SummerRain/p/1005582.html
最新文章
Semantic Scene Completion from a Single Depth Image
Tips, tricks and gotchas in PyTorch
PyTorch 中减少内存泄漏的实践经验
Finding and Fixing Memory Leaks in Python
Data science Python notebooks
Volley Library in Android
iconv library for Windows
Linux下安装MySQL-python
IOS开发---菜鸟学习之路--(十一)-使新闻内容自适应高度
IOS开发---菜鸟学习之路--(十)-实现新闻详细信息浏览页面
热门文章
IOS开发---菜鸟学习之路--(九)-利用PullingRefreshTableView实现下拉刷新
IOS开发---菜鸟学习之路--(八)-实现新闻页面
IOS开发---菜鸟学习之路--(七)-自定义UITableViewCell
IOS开发---菜鸟学习之路--(六)-UITableView几个方法的使用说明
IOS开发---菜鸟学习之路--(五)-MacBook购买前后感想
IOS开发---菜鸟学习之路--(四)-登陆界面
IOS开发---菜鸟学习之路--(三)-数据解析
IOS开发---菜鸟学习之路--(二)-数据获取
LiveGBS通过GB28181接入海康、大华、华为、科达等摄像头或联网网关平台转成RTSP、RTMP、FLV、HLS直播流实现web和大屏展示
LiveNVR高性能RTSP、Onvif探测流媒体服务接入海康、大华、华为、科达等摄像机、NVR进行全终端无插件直播
Copyright © 2011-2022 走看看