zoukankan
html css js c++ java
简单的使用.NET加密
对称加密算法:
using System;
using System.Security.Cryptography;
using System.Text;
using System.IO;
///
<summary>
/// 使用对称加密的例子
///
</summary>
class Class1
{
static
void
Main(
string[] args)
{
Class1 c
=
new Class1();
c.StartDemo();
}
public
void StartDemo()
{
//
establish symmetric algorithm
SymmetricAlgorithm sa
= Rijndael.Create();
//
key and iv
sa.GenerateKey();
//产生随机的 (32*8) 位的密钥
//
sa.GenerateIV();
//
初始向量,在ECB模式里面可以不用IV
sa.Mode
=
CipherMode.ECB;
//
块处理模式
sa.Padding
=
PaddingMode.Zeros;
//
末尾数据块的填充模式
Console.WriteLine("
密钥是:
"
);
for
(
int
i
=
0
; i
<
sa.Key.Length; i
++
)
{
Console.Write(
"
{0:X2}
"
,sa.Key[i]);
}
Console.WriteLine(
"
\n
"
);
//
establish crypto stream
MemoryStream ms
=
new MemoryStream();
CryptoStream cs
=
new CryptoStream(ms,sa.CreateEncryptor(),CryptoStreamMode.Write);
string
plaintext;
//
原始文本
byte
[] cipherbytes;
//
加密后的数据
byte
[] finalbytes;
//
解密后的数据
plaintext=
"
How are you? 这是一行文字。
";
byte
[] plainbytes
= Encoding.UTF8.GetBytes(plaintext);
Console.WriteLine(
"
原始文本是:\n{0}\n
",plaintext);
//
display plaint text byte array in hex format
Console.WriteLine(
"
原始数据是:
"
);
for
(
int
i
=
0
; i
<
plainbytes.Length; i
++
)
{
Console.Write(
"
{0:X2}
"
,plainbytes[i]);
}
Console.WriteLine(
"
\n
"
);
//
加密过程
cs.Write(plainbytes,
0, plainbytes.Length);
cs.Close();
cipherbytes
= ms.ToArray();
ms.Close();
//
display ciphertext byte array in hex format
Console.WriteLine(
"
加密后的数据是:
"
);
for
(
int
i
=
0
; i
<
cipherbytes.Length; i
++
)
{
Console.Write(
"
{0:X2}
"
,cipherbytes[i]);
}
Console.WriteLine(
"
\n
"
);
//
下面的为加密过程
ms
=
new MemoryStream(cipherbytes);
cs
=
new CryptoStream(ms,sa.CreateDecryptor(),CryptoStreamMode.Read);
finalbytes
=
new
byte[plainbytes.Length];
cs.Read(finalbytes,
0,plainbytes.Length);
Console.WriteLine(
"
解密后的数据是:
"
);
for
(
int
i
=
0
; i
<
finalbytes.Length; i
++
)
{
Console.Write(
"
{0:X2}
"
,finalbytes[i]);
}
Console.WriteLine(
"
\n
"
);
string
finaltext
=Encoding.UTF8.GetString(finalbytes);
Console.WriteLine(
"
解密后的文本是:\n{0}\n\n
",finaltext );
Console.WriteLine(
"
按任意键继续
");
Console.ReadLine();
}
}
非对称加密算法:
using
System;
using
System.IO;
using
System.Text;
using
System.Security.Cryptography;
/**/
///
<summary>
///
一个简单的使用.NET非对称加密算法的例子
///
本例的程序很简单,仅用于说明如何在.NET里面使用非对称(RSA)算法。
///
Kwanhong 2005.9
///
</summary>
class
Class1
{
public
static
void
Main(
string
[] args)
{
Class1 c
=
new
Class1();
c.StartDemo();
}
public
void
StartDemo()
{
//
RSA的加解密过程:
//
有 rsa1 和 rsa2 两个RSA对象。
//
现在要 rsa2 发送一段信息给 rsa1, 则先由 rsa1 发送“公钥”给 rsa2
//
rsa2 获取得公钥之后,用来加密要发送的数据内容。
//
rsa1 获取加密后的内容后,用自己的私钥解密,得出原始的数据内容。
RSACryptoServiceProvider rsa1
=
new
RSACryptoServiceProvider();
RSACryptoServiceProvider rsa2
=
new
RSACryptoServiceProvider();
string
publickey;
publickey
=
rsa1.ToXmlString(
false
);
//
导出 rsa1 的公钥
string
plaintext;
plaintext
=
"
你好吗?这是用于测试的字符串。
"
;
//
原始数据
Console.WriteLine(
"
原始数据是:\n{0}\n
"
,plaintext);
rsa2.FromXmlString(publickey);
//
rsa2 导入 rsa1 的公钥,用于加密信息
//
rsa2开始加密
byte
[] cipherbytes;
cipherbytes
=
rsa2.Encrypt(
Encoding.UTF8.GetBytes(plaintext),
false
);
/**/
/*
//////////////////////////////////////////////
*/
Console.WriteLine(
"
加密后的数据是:
"
);
for
(
int
i
=
0
; i
<
cipherbytes.Length; i
++
)
{
Console.Write(
"
{0:X2}
"
,cipherbytes[i]);
}
Console.WriteLine(
"
\n
"
);
/**/
/*
//////////////////////////////////////////////
*/
//
rsa1开始解密
byte
[] plaintbytes;
plaintbytes
=
rsa1.Decrypt(cipherbytes,
false
);
Console.WriteLine(
"
解密后的数据是:
"
);
Console.WriteLine(Encoding.UTF8.GetString(plaintbytes));
Console.ReadLine();
}
}
查看全文
相关阅读:
vs2008 服务器控件库
dropdoenlist 设置默认值
.NET用HttpFileCollection实现多文件上传
dropdownlist 绑定
简单的webservice调用(天气预报)
统计在线人数
多文件上传
dropdownlist1 绑定 value值
WMI 脚本入门:第一部分 (MSDN)
WMI 脚本入门:第三部分 (MSDN)
原文地址:https://www.cnblogs.com/studio313/p/298953.html
最新文章
【转】XP开机启动一直停留在滚动条界面的解决方案
【技术贴】IE8变回IE6,怎么让IE8卸载,装IE6.0的超简单解决办法。
【技术贴】注册表修改Win7默认字体为XP新宋体!!注册表修改字体。
【转】PB9.0中messagebox的使用方法(原创)
【转】【转】一个一年工作经验的java工程师从工作初到今天的所有收藏的学习java的网站(有些很经典
关于**同学申请入党的群众意见范文
【转】『转载』windows 7下安装ubuntu 10.10
【转】ubuntu10.10下安装锐捷客户端
管理SharePoint中的账号的密码
Workstation Service
热门文章
SharePoint中的列表(List) 与Content Type 之一
在Windows 7上安装HyperV manager
Share一个在线的URL Encoding的工具
与Search相关的SharePoint中的几个service account
关于SharePoint账号设置的一些Tips
User Information List SharePoint中隐藏的用户列表
AllUserData表中都存储些什么?
Windows Server 2008 R2
asp.net timer.timer
c# 接口1
Copyright © 2011-2022 走看看