999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

C# WindowsForm編程中MD5加密的設計與實現

2013-04-29 00:44:03黃毅,楊朔,陳進原,許錦才
計算機時代 2013年6期
關鍵詞:界面數據庫信息

黃毅,楊朔,陳進原,許錦才

摘 要: C#是可用于創建要運行在.NET CLR上的應用程序的語言之一。C#從C和C++語言演化而來,是Microsoft專門為使用.NET平臺而創建的。MD5加密一般用于登錄驗證或者數據庫密碼的存儲。文章對C#的WindowsForm編程和MD5加密作了簡要介紹,然后通過WindowsForm編程實現了對MD5密碼加密的應用,最后完成了所設計的業務流程。

關鍵詞: .NET CLR; MD5加密; 登錄驗證; WindowsForm編程

中圖分類號:TP391.1 文獻標志碼:A 文章編號:1006-8228(2013)06-09-04

Design and implementation of MD5 cryptographic in C# WindowsForm programming

Huang Yi1, Yang Shuo2, Chen Jinyuan2, Xu Jincai2

(1. Hangzhou Dianzi University, Hangzhou, Zhejiang 310018, China; 2. Zhejiang Topcheer Information Technology Co.,Ltd)

Abstract: C# is one of computer languages which can be used to create one kind application programs running on the .NETCLR. It is evolved from the C and the C++ languages and created by Microsoft for the .Net platform. MD5 encryption is commonly used for login validation and storage of database passwords. In this paper, WindowsForm programming of C# and MD5 encryption are introduced roughly. The application of MD5 password encryption is realized through WindowsForm programming. Finally the design of business process is completed.

Key words: .NET CLR; MD5 encryption; login validation; WindowsForm programming

0 引言

我們在開發網站或登錄網站的時候,必定會考慮到個人信息保密的問題,所以設置密碼和加密操作也是必須的。現在最流行的加密算法曾被認為是最安全的MD5算法,是一種不可逆的算法,對于密文幾乎不能還原成明文。倘若我們不對密碼進行加密,數據的存儲方式就是以明文的形式存放的,別人很容易就能獲取密碼。本文對C# WindowsForm編程和MD5加密做了介紹,通過其相關技術,設計并實現了MD5相關加密的業務流程。

1 C# WindowsForm

自從.Net平臺發布(約2001年)以來,基礎類庫中就包含了叫做Windows Forms(包含在用于構建Ssytem.Windows.Form.dll程序集中)的API。Windows Form 由上百個類型(類、接口、結構、枚舉和委托)組成,這些類型都分散在System.Windows.Form.dll程序集各種命名空間中,如圖1所示。

在System.Windows.Forms里的數百個類型可以分成以下幾個大類。

⑴ 核心架構:其展現了WindowsForms程序的核心操作。

⑵ 控件:這些類型用來建立圖形用戶界面。

⑶ 組件:可為Windows Forms提供可視特性,其在運行時不可見,但在設計時可以被可視化配置。

⑷ 公共對話框:Windows Froms為公共操作提供了許多對話框[1]。

圖1 System.Windows.Forms.dll中的命名空間

在WindowsForm中,主要就是窗體的設計和相應控件的應用。通過對控件之間的合理組合就可以構造出一個符合要求的窗體。常用的控件有:Button控件(按鈕),Label(標簽),LinkLabel(鏈接標簽),TextBox(文本框),RadioButton(單選按鈕),CheckBox(復選框)。在對于各種控件,其相應的事件也很多,在本文中主要使用了Click事件即點擊事件。

2 MD5加密

MD5在90年代初由MIT的計算機科學實驗室和RSA Data Security Inc發明,經過MD2、MD3、和MD4發展而來[2]。它的作用是讓大容量信息在用數字簽名軟件簽署私人密鑰前被“壓縮”成一種保密格式(把一個任意長度的字節串變換成一定長的大整數),MD5最廣泛被用于各種軟件的密碼認證和鑰匙識別上面,通俗地講是解釋人們所說的序列號[3]。

2.1 MD5原理

Message-Digest泛指字節串的(Message)的Hash變換,也稱為單向散列函數,解釋把一個任意長度的“字符串”變換成一定長的大整數,這種變換只與字節的值有關,與字符集或編碼方式無關。MD5將任意長度的“字節串”變換成一個128bit的大整數,并且它是一個不可逆的字符串變換算法。換言之,即使看到了源程序和算法描述,也無法將一個MD5的值變換回原始的字符串;從數學原理上說,是因為原始的字符串有無窮多個,這有點像不存在反函數的數學函數。可以看出MD5加密后是無法進行解密的(也不是絕對的),例如一個string,利用MD5算法進行加密后是無法將它還原為原來的string[4]。如果數據不采用任何算法進行加密的話,數據的存儲方式是以明文形式存放的,意味著數據有很大的可能性被泄露,但是如果數據經過加密,所看到的也只是一堆毫無排列順序的數字或字符。

2.2 MD5加密的效果

使用MD5加密有一個特點,就是同一個string在同樣的編碼方式下加密的結果是一樣的,所以可以為任何文件產生一個獨一無二的“數字指紋”[5]。如圖2所示。

[string str][獨一無二的數字指紋][MD5加密

不可逆的]

圖2 MD5加密

加密后,一般取得的都是32位的字符或數字組成。通過加密后得到的密碼顯示如圖3所示。

圖3 密碼字符串加密

通過這一過程,存入數據庫的密碼信息,就是我們看到的那個繁瑣的字符串。當然,在登錄的時候驗證的也是那個字符串。

2.3 MD5加密實際應用及安全性

MD5加密技術廣泛用于數字簽名領域,比如在發布軟件的時候,經常會有一個文件擴展名為.MD5的文件,這就是該軟件的數字簽名,MD5將整個文件當作一個大文本信息。通過不可逆的字符串變換算法,產生了這個惟一的MD5信息摘要。在以后傳播這個文件的過程中,只要文件的內容發生了任何形式的改變,其重新計算的MD5摘要信息就會不相同,由此,可以判斷文件是否被纂改。

MD5還廣泛用于加密保密信息上,如對于數據庫中的登錄密碼一般都是經過MD5加密后存放的,當登錄時,根據用戶填報的密碼生成相應的MD5值與數據庫中的信息對比,從而判定登錄的合法性。

理論上任何一種加密算法都有其漏洞,但由于MD5的不可逆,使其具有一定的安全性。而從實際應用的角度講,最大的隱患往往在使用者本身,而非加密技術,在不斷探索更安全有效的加密手段的同時更需要用戶對密鑰使用的安全性。

3 流程設計

3.1 數據庫設計

對于數據庫的選取,我們選擇的是sql server2000。在數據庫構建了一個表,取名為userinfo,其中的字段是:

id 賬號(主鍵)

password 密碼

name 姓名

對其中的password使用MD5加密算法對其加密。

3.2 服務器端設計

在服務器端存在著一個UserinfoDo類和Userinfo類,正因UserinfoDo這個類提供的各種關于數據庫的增刪改查方法,才能有如下兩個功能的實現:一個是與用戶進行信息交流;另一個是對數據庫進行操作。主要是接收從界面傳來的信息或者返回信息給界面,這之間都會與數據庫發生交互。Userinfo是對應數據庫中的userinfo表而創建的一個類。

3.3 MD5加密設計

對于MD5加密,設計時創建一Md5use類,在里面創建一個Getmd5str(string str)的方法,參數即為要加密的密碼字符串,返回值為加密后的密碼,這樣在需要加密的時候,僅僅只需要調用一下這個方法即可。

3.4 客戶端端設計

這里我們給出窗口界面整體操作的大致流程,如圖4所示。

[登錄界面][MD5驗證登錄][信息顯示][數據庫][用戶的相關操作][沒賬號][注冊界面][MD5加密]

圖4 總流程設計

3.4.1 登錄設計

登錄靠UserinfoLogin這個窗體來實現,用戶輸入相應的賬號密碼進行登錄,如果密碼不對會有相應的提示。對于沒有賬號的用戶可以進入注冊窗口,如圖5所示。

[賬號][密碼][信息顯示][注冊][MD5加密驗證] [成功登錄] [登錄失敗] [(或重新輸入)]

圖5 登錄流程設計

當登錄失敗后,可以選擇重新登錄。

3.4.2 注冊設計

注冊靠Region這個窗體來實現,使用者可以在此完成注冊,其注冊的流程如圖6所示。

[賬號][密碼][名字][MD5加密][注冊][失敗][成功][賬號重復][返回登錄]

圖6 注冊流程設計

在用戶注冊的時候,系統會自動判斷賬號是否重復。

3.4.3 信息顯示設計

在登錄成功之后,信息顯示靠窗體Information來實現,顯示相應的用戶信息。其流程如圖7所示。

[登錄成功][信息顯示界面][密碼修改][賬號注銷][返回][返回登錄界面]

圖7 信息顯示設計

在信息顯示界面,用戶可以對自己的信息進行修改,其對密碼的修改也仍會有MD5加密的過程。

4 相應流程實現

4.1 服務器端的實現

服務器端的Userinfo類中定義了三屬性,分別是private的string _id,string _password,string _name。這是由對應數據庫的表創建的。

在服務器端的UserinfoDo類中,定義的連接字符為:

private static string con="Data Source=HY-PC;

Initial Catalog=hy; User ID=sa";

在此類中,優先聲明了以下幾個屬性:

private static SqlConnection conn; 表示一個連接

private static SqlCommand comm; 表示一個對象

private static SqlDataReader sdr;

private static UserInfo user;

在這個類中其相應的方法有:

⑴ 構造方法

public UserinfoDo()

{ conn=new SqlConnection(con);

conn.Open();

}

我們把創建連接放到其構造方法中,是為了在初始化的時候,自動創建連接。

⑵ 按ID查詢

public UserInfo findone(string id) {

string sql=string.Format("select*from userinfo where id={0}",id);

comm=new SqlCommand(sql,conn);

sdr=comm.ExecuteReader();

using(sdr) {

while (sdr.Read())

{ string m_id=(string)sdr["id"];

string m_password=(string)sdr["password"];

string m_name=(string)sdr["name"];

user=new UserInfo(m_id, m_password, m_name);

}

}

return user;

}

后面的代碼量過大,在此就不一一列舉。

⑶ 添加方法

public void addone(UserInfo user) {

……

}

⑷ 信息修改方法

public void updateone(UserInfo user) {

……

}

⑸ 刪除方法

public void deleteone(string m_id) {

……

}

4.2 MD5加密的實現

MD5加密是在一個Md5use類中的Getmd5str(string str)方法中實現的。其實現的過程如下:

public string Getmd5str(string str) {

string laststr=null;

MD5 md5=new MD5CryptoServiceProvider();

byte[] fromdata=System.Text.Encoding.Unicode.GetBytes(str);

byte[] todata=md5.ComputeHash(fromdata);

for (int i=0; i

laststr+=todata[i].ToString("X");

return laststr.Substring(0,31);

}

注意編寫此代碼之前需要先導入包含算法的類:

using System.Security.Cryptography;

4.3 登錄的實現

圖8為windows窗體的登錄窗口:

圖8 登錄窗口

當密碼、賬戶或輸入信息不對時會跳出窗口,如圖9所示。

圖9 密碼錯誤提示框

其相應的驗證即密碼加密的代碼如下:

Md5use md5=new Md5use();

if(textBox1.Text.Trim()=="")

MessageBox.Show("請輸入正確的賬號");

else {

ud=new UserinfoDo();

try {

user=ud.findone(textBox1.Text);

if (user.Password==md5.Getmd5str(textBox2.Text)

&&user.Id==textBox1.Text)

{

ud=new UserinfoDo();

information infor=new information(this);

this.Hide();

infor.ShowDialog();

}

else

MessageBox.Show("請輸入正確的密碼");

}

catch (Exception)

MessageBox.Show("請仔細確認賬號密碼");

}

當登錄成功后會進入信息顯示界面,若失敗會給出相應的提示。這些代碼都寫在登錄按鈕的點擊事件中。

4.4 注冊的實現

注冊界面如圖10所示。

圖10 注冊窗體

當注冊成功或因ID重復注冊而失敗,都會有相應的窗口提示。

代碼的實現如下:

{ ud=new UserinfoDo();

md5=new Md5use();

if (textBox1.Text.Trim()=="")

MessageBox.Show("請輸入賬號");

else

{ try

{ ud.addone(new UserInfo(textBox1.Text,

md5.Getmd5str(textBox2.Text), textBox3.Text));

MessageBox.Show("注冊成功");

}

catch (Exception)

MessageBox.Show("賬號重復");

}

}

以上的代碼都寫在界面注冊按鈕的點擊事件中,其中md5.Getmd5str(textBox2.Text)就是為密碼加密。

4.5 信息顯示的實現

信息顯示界面,主要是顯示數據庫中的內容,如圖11所示。

圖11 信息顯示窗體

從圖7中可以看到一些相應的功能按鈕,當進行信息修改或用戶注銷的時候,都會在點擊后自動回到登錄界面。相應代碼實現如下:

確認修改:{

md5=new Md5use();

uf.ud.updateone(new UserInfo(uf.user.Id,

md5.Getmd5str(textBox1.Text),textBox2.Text));

MessageBox.Show("信息修改成功,重新登錄");

UserinfoLogin login=new UserinfoLogin();

this.Hide();

login.ShowDialog();

}

注銷ID:{

uf.ud.deleteone(uf.user.Id);

UserinfoLogin login=new UserinfoLogin();

this.Hide();

login.ShowDialog();

}

返回登錄:{

UserinfoLogin login=new UserinfoLogin();

this.Hide();

login.ShowDialog();

}

代碼都是寫在相對應按鈕的點擊事件中。

5 結束語

MD5加密的不可逆性,使它在當今加密領域被廣泛應用。本文在介紹C#的WindowsForm編程和MD5加密相關知識的基礎上,探討了對MD5加密應用的設計流程,其核心思想就是對用戶信息進行存儲的MD5加密。通過多個Window窗口設計的實現,逐步實現了整個流程的設計。相信MD5加密技術還會在以后不斷得到完善,并且有更廣泛的使用。

參考文獻:

[1] Andrew Troelsen. C#與.net 4高級程序設計(第五版)[M].人民郵電

出版社,2011:1146-1147

[2] 桑海,李建寶.加密算法MD5的研究與應用[J].華南金融電腦,

1999.7.

[3] 施衛鋒,周俊,朱利剛.多戶住處系統中數據安全性控制機器及其實

現[J].微機發展,2003.1.

[4] 陳瑋.MD5加密原理及安全性分析[J].電腦知識與技術,2007.19.

[5] 陳建熊,劉克勝;數據加密技術及其應用[J].安徽電子信息職業技術

學院學報,2004.Z1.

猜你喜歡
界面數據庫信息
國企黨委前置研究的“四個界面”
當代陜西(2020年13期)2020-08-24 08:22:02
基于FANUC PICTURE的虛擬軸坐標顯示界面開發方法研究
訂閱信息
中華手工(2017年2期)2017-06-06 23:00:31
數據庫
財經(2017年2期)2017-03-10 14:35:35
人機交互界面發展趨勢研究
數據庫
財經(2016年15期)2016-06-03 07:38:02
數據庫
財經(2016年3期)2016-03-07 07:44:46
數據庫
財經(2016年6期)2016-02-24 07:41:51
手機界面中圖形符號的發展趨向
新聞傳播(2015年11期)2015-07-18 11:15:04
展會信息
中外會展(2014年4期)2014-11-27 07:46:46
主站蜘蛛池模板: 99精品免费在线| 久久黄色小视频| 国产精品黑色丝袜的老师| 99视频有精品视频免费观看| 日韩中文无码av超清| 毛片基地视频| 免费看黄片一区二区三区| 9啪在线视频| 找国产毛片看| 热九九精品| 国产自产视频一区二区三区| 日本爱爱精品一区二区| 青青青草国产| 成人午夜视频网站| 国产福利一区在线| 成人福利在线视频免费观看| av午夜福利一片免费看| 99热在线只有精品| 欧美综合中文字幕久久| 国产成人免费观看在线视频| 日韩AV无码免费一二三区| 国产丰满成熟女性性满足视频| 亚洲国产高清精品线久久| 亚洲视频一区在线| 日韩色图区| 欧美黄网站免费观看| 女人一级毛片| 福利在线免费视频| 国产日韩欧美一区二区三区在线| 99热亚洲精品6码| 2021国产在线视频| 亚洲天堂网在线视频| 91精品国产自产91精品资源| 91福利片| 夜夜拍夜夜爽| 在线观看精品自拍视频| 国产自无码视频在线观看| 国产乱人乱偷精品视频a人人澡| 99在线视频免费| 永久免费无码成人网站| 久久国产精品夜色| 亚洲无码视频一区二区三区| 欧美精品影院| 91人妻日韩人妻无码专区精品| 国产精品污视频| 伊人福利视频| 九九九九热精品视频| 国产在线欧美| 五月天在线网站| 国产玖玖玖精品视频| 国产综合精品一区二区| 制服丝袜在线视频香蕉| 久久天天躁狠狠躁夜夜躁| 欧美曰批视频免费播放免费| 暴力调教一区二区三区| 日日拍夜夜嗷嗷叫国产| 99久久免费精品特色大片| 91网站国产| 毛片网站在线看| 亚洲欧美人成电影在线观看| 欧美一道本| 国产美女视频黄a视频全免费网站| 欧美日韩高清在线| 在线观看国产精品日本不卡网| 中文字幕无码电影| 熟女视频91| 久久精品人妻中文系列| 国产免费a级片| 国产麻豆aⅴ精品无码| 伊人蕉久影院| 午夜人性色福利无码视频在线观看| 日韩成人午夜| 亚洲日韩精品无码专区97| 久青草免费在线视频| 欧美在线综合视频| 91成人在线免费观看| 激情亚洲天堂| 久久精品人人做人人爽电影蜜月| 久久国产精品77777| 久久天天躁狠狠躁夜夜2020一| www.狠狠| 久久综合成人|