麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 編程 > .NET > 正文

這是一個非常有趣的例子!(DotNET密碼系統(tǒng))

2024-07-21 02:30:04
字體:
供稿:網(wǎng)友

(億眾國際-009)[原創(chuàng)]這是一個非常有趣的例子!

/////////////////////////////////////////////////////////////
//author: stardicky //
//e-mail: [email protected] //
//qqnumber: 9531511 //
//company: ezone international //
//class: hbs-0308 //
//title: 利用密碼系統(tǒng)保證數(shù)據(jù)安全 //
/////////////////////////////////////////////////////////////
//介紹: //
// 這是一個非常有趣的例子! //
// 在ezone international公司里ting是dicky的女友,viisen是//
//他們的上級.viisen不允許公司內(nèi)部員工談戀愛,上有政策,下有對//
//策,ting和dicky利用空閑時間通過郵件的方式與對方通訊,viisen//
//下發(fā)任務(wù)給dicky的方式也是通過發(fā)送郵件.為了保存郵件的安全 //
//性,郵件采用rc2(對稱加密)加密方式進行發(fā)送,rc2的密鑰經(jīng)過rsa//
//(非對稱加密)的加密.ting,dicky和viisen各自有一對公鑰和密鑰//
//.ting和dicky的通訊內(nèi)容對于viisen是不可見的,dicky和viisen //
//的通訊內(nèi)容對于ting是不可見的. //
/////////////////////////////////////////////////////////////

using system;
using system.io;
using system.text;
using system.security.cryptography;

namespace ezonesecuritysystem
{
class ezonesecuritydemo
{
//創(chuàng)建三個員工對象,分別是 dicky, ting, viisen
public static ezoneperson dicky=new ezoneperson("dicky");
public static ezoneperson ting=new ezoneperson("ting");
public static ezoneperson viisen=new ezoneperson("viisen");

[stathread]
public static void main(string[] args)
{
console.writeline("==================== 場景一: dicky給自己發(fā)送郵件消息 ====================");
scene_1();
console.writeline("=========================================================================");
console.write("按任意鍵繼續(xù)......");
console.in.readline();

console.writeline("==================== 場景二: dicky給ting發(fā)送郵件消息 ====================");
scene_2();
console.writeline("=========================================================================");
console.write("按任意鍵繼續(xù)......");
console.in.readline();

console.writeline("================ 場景三: dicky給ting ,viisen發(fā)送郵件消息 ================");
scene_3();
console.writeline("=========================================================================");
console.write("按任意鍵繼續(xù)......");
console.in.readline();

}

/// <summary>
/// dicky給自己發(fā)送郵件消息
/// </summary>
public static void scene_1()
{
console.writeline("dicky用自己的公鑰加密信息");
ezonemessage dickymessage=dicky.encryptmessage("我今天努力了嗎?");
console.writeline(system.environment.newline);

console.writeline("dicky用自己的私鑰解密消息");
dicky.decryptmessage(dickymessage);
console.writeline(system.environment.newline);

console.writeline("viisen試圖用自己的私鑰解密消息");
viisen.decryptmessage(dickymessage);
console.writeline(system.environment.newline);
}
/// <summary>
/// dicky給ting發(fā)送郵件消息
/// </summary>
public static void scene_2()
{
console.writeline("dicky獲得ting的公鑰");
dicky.getpublickey(ting);
console.writeline(system.environment.newline);

console.writeline("dicky用ting的公鑰加密信息");
ezonemessage tingmessage=dicky.encryptmessage("今晚一起吃飯好嗎?");
console.writeline(system.environment.newline);

console.writeline("ting用自己的私鑰解密信息");
ting.decryptmessage(tingmessage);
console.writeline(system.environment.newline);

console.writeline("viisen試圖用自己的私鑰解密消息");
viisen.decryptmessage(tingmessage);
console.writeline(system.environment.newline);
}

/// <summary>
/// dicky給ting,viisen發(fā)送郵件消息
/// </summary>
public static void scene_3()
{
console.writeline("dicky獲得ting的公鑰");
dicky.getpublickey(ting);
console.writeline(system.environment.newline);

console.writeline("dicky用ting的公鑰加密信息");
ezonemessage tingmessage=dicky.encryptmessage("i love you!");
console.writeline(system.environment.newline);

console.writeline("dicky獲得viisen的公鑰");
dicky.getpublickey(viisen);
console.writeline(system.environment.newline);

console.writeline("dicky用viisen的公鑰加密信息");
ezonemessage viisenmessage=dicky.encryptmessage("2003年度的財務(wù)總結(jié)報告放在你的辦公桌上!");
console.writeline(system.environment.newline);

console.writeline("ting用自己的私鑰解密信息");
ting.decryptmessage(tingmessage);
console.writeline(system.environment.newline);

console.writeline("viisen用自己的私鑰解密信息");
viisen.decryptmessage(viisenmessage);
console.writeline(system.environment.newline);

}
}



//郵件對象
class ezonemessage
{
public byte[] messagebody;//郵件內(nèi)容(內(nèi)容通過rc2(對稱加密)加密過的)
public byte[] rc2key; //rc2的密鑰(通過rsa(非對稱加密)加密過的)
public byte[] rc2iv; //rc2的初始化向量
}
//員工對象
class ezoneperson
{
//rsa(非對稱加密對象)
private rsacryptoserviceprovider ezonersa;
//rc2(對稱機密對象)
private rc2cryptoserviceprovider ezonerc2;
//員工姓名
private string name;

//person構(gòu)造方法
public ezoneperson(string name)
{
//初始化成員對象
this.ezonersa=new rsacryptoserviceprovider();
this.ezonerc2=new rc2cryptoserviceprovider();
this.name=name;
}

//發(fā)送公鑰
public rsaparameters sendpublickey()
{
//rsa的公鑰和密鑰對象
rsaparameters result=new rsaparameters();
//導(dǎo)出ezonersa的公鑰(false 表示不導(dǎo)出私鑰)
result=this.ezonersa.exportparameters(false);
return result;
}

//獲得公鑰
public void getpublickey(ezoneperson obj)
{
//導(dǎo)入 ezoneperson對象 的公鑰
this.ezonersa.importparameters(obj.sendpublickey());
}

//加密郵件
public ezonemessage encryptmessage(string text)
{
ezonemessage messageobj=new ezonemessage();
//將消息從字符串的形式轉(zhuǎn)換成字節(jié)數(shù)組的形式
byte[] messagebytes=system.text.encoding.utf8.getbytes(text);
//隨機創(chuàng)建rc2的密鑰
this.ezonerc2.generatekey();
//隨機創(chuàng)建rc2的初始化向量
this.ezonerc2.generateiv();
//用rsa加密rc2的密鑰,并賦值給消息對象的rc2的密鑰匙(false 表示不用oaep進行填充,只有winxp以上版本的*作系統(tǒng)才支持)
messageobj.rc2key=this.ezonersa.encrypt(this.ezonerc2.key,false);
//給消息對象的rc2的向量賦值
messageobj.rc2iv=this.ezonerc2.iv;

//創(chuàng)建一個加密對象
icryptotransform myencryptor=this.ezonerc2.createencryptor();
//創(chuàng)建一個內(nèi)存流
memorystream ezonememorystream=new memorystream();
//在內(nèi)存流的基礎(chǔ)上創(chuàng)建一個加密流對象
cryptostream myencryptostream=new cryptostream(ezonememorystream,myencryptor,cryptostreammode.write);

//向加密流中寫入郵件內(nèi)容
myencryptostream.write(messagebytes,0,messagebytes.length);
//刷新加密流的緩沖區(qū)
myencryptostream.flushfinalblock();
//給消息對象的messagebody(消息主體)賦值(經(jīng)過rc2加密過的字節(jié)數(shù)組)
messageobj.messagebody=ezonememorystream.toarray();
ezonememorystream.close();
myencryptostream.close();
//返回ezonemessage對象
return messageobj;
}
//解密郵件
public void decryptmessage(ezonemessage obj)
{
this.ezonerc2.iv=obj.rc2iv;
try
{
//用rsa解密rc2的密鑰(false 表示不用oaep進行填充,只有winxp以上版本的*作系統(tǒng)才支持)
this.ezonerc2.key=this.ezonersa.decrypt(obj.rc2key,false);
}
catch(cryptographicexception e)
{
console.writeline("解密失敗: "+e.message);
return;
}
//創(chuàng)建一個解密對象
icryptotransform mydecryptor=this.ezonerc2.createdecryptor();
//創(chuàng)建一個內(nèi)存流,用obj的郵件消息初始化內(nèi)存流!
memorystream ezonememorystream=new memorystream(obj.messagebody);
//在內(nèi)存流的基礎(chǔ)上創(chuàng)建一個解密流對象
cryptostream mydecryptostream=new cryptostream(ezonememorystream,mydecryptor,cryptostreammode.read);
//存儲解密后的郵件內(nèi)容
byte[] messagetext=new byte[obj.messagebody.length];
//從解密流解密數(shù)據(jù),并把解密過的數(shù)據(jù)寫入到messagetext字節(jié)數(shù)組中
mydecryptostream.read(messagetext,0,messagetext.length);

ezonememorystream.close();
mydecryptostream.close();

console.writeline("解密成功:"+system.text.encoding.utf8.getstring(messagetext));
}
}
}



發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 亚洲一区久久久 | 欧美一级在线看 | 国产精品99久久久久久大便 | 国产亚洲精品成人 | 久久成人精品视频 | 成人国产精品一区 | 国产精品久久77777 | 婷婷久久久久久 | 日本教室三级在线看 | 草莓视频在线导航 | 日韩视频区 | 怦然心动50免费完整版 | 免费久久久久 | 婷婷中文字幕一区二区三区 | 欧美性受xxxxxx黑人xyx性爽 | 久久精品操 | 欧美四级在线观看 | 成码无人av片在线观看网站 | 久久久www视频 | 露脸各种姿势啪啪的清纯美女 | 外国一级黄色片 | 香蕉视频18| 在线播放一区二区三区 | 亚洲亚色 | av影院在线播放 | 欧美1区2区 | 久国久产久精永久网页 | 国产免费最爽的乱淫视频a 毛片国产 | 亚洲最新色 | 久久免费视频在线 | 中文字幕在线不卡视频 | 九九视频精品在线观看 | 精品国产一区二区三区久久久蜜月 | 日本爽快片100色毛片视频 | 亚洲人成中文字幕在线观看 | 777zyz色资源站在线观看 | 黄色1级视频 | 人人舔人人射 | 999精品国产 | 黄片毛片一级 | 一区二区三区欧洲 |