亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        C# WindowsForm編程中MD5加密的設(shè)計與實現(xiàn)

        2013-04-29 00:44:03黃毅,楊朔,陳進原,許錦才
        計算機時代 2013年6期
        關(guān)鍵詞:窗體控件賬號

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

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

        關(guān)鍵詞: .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 引言

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

        1 C# WindowsForm

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

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

        ⑴ 核心架構(gòu):其展現(xiàn)了WindowsForms程序的核心操作。

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

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

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

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

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

        2 MD5加密

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

        2.1 MD5原理

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

        2.2 MD5加密的效果

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

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

        不可逆的]

        圖2 MD5加密

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

        圖3 密碼字符串加密

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

        2.3 MD5加密實際應(yīng)用及安全性

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

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

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

        3 流程設(shè)計

        3.1 數(shù)據(jù)庫設(shè)計

        對于數(shù)據(jù)庫的選取,我們選擇的是sql server2000。在數(shù)據(jù)庫構(gòu)建了一個表,取名為userinfo,其中的字段是:

        id 賬號(主鍵)

        password 密碼

        name 姓名

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

        3.2 服務(wù)器端設(shè)計

        在服務(wù)器端存在著一個UserinfoDo類和Userinfo類,正因UserinfoDo這個類提供的各種關(guān)于數(shù)據(jù)庫的增刪改查方法,才能有如下兩個功能的實現(xiàn):一個是與用戶進行信息交流;另一個是對數(shù)據(jù)庫進行操作。主要是接收從界面?zhèn)鱽淼男畔⒒蛘叻祷匦畔⒔o界面,這之間都會與數(shù)據(jù)庫發(fā)生交互。Userinfo是對應(yīng)數(shù)據(jù)庫中的userinfo表而創(chuàng)建的一個類。

        3.3 MD5加密設(shè)計

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

        3.4 客戶端端設(shè)計

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

        [登錄界面][MD5驗證登錄][信息顯示][數(shù)據(jù)庫][用戶的相關(guān)操作][沒賬號][注冊界面][MD5加密]

        圖4 總流程設(shè)計

        3.4.1 登錄設(shè)計

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

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

        圖5 登錄流程設(shè)計

        當?shù)卿浭『?,可以選擇重新登錄。

        3.4.2 注冊設(shè)計

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

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

        圖6 注冊流程設(shè)計

        在用戶注冊的時候,系統(tǒng)會自動判斷賬號是否重復(fù)。

        3.4.3 信息顯示設(shè)計

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

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

        圖7 信息顯示設(shè)計

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

        4 相應(yīng)流程實現(xiàn)

        4.1 服務(wù)器端的實現(xiàn)

        服務(wù)器端的Userinfo類中定義了三屬性,分別是private的string _id,string _password,string _name。這是由對應(yīng)數(shù)據(jù)庫的表創(chuàng)建的。

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

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

        Initial Catalog=hy; User ID=sa";

        在此類中,優(yōu)先聲明了以下幾個屬性:

        private static SqlConnection conn; 表示一個連接

        private static SqlCommand comm; 表示一個對象

        private static SqlDataReader sdr;

        private static UserInfo user;

        在這個類中其相應(yīng)的方法有:

        ⑴ 構(gòu)造方法

        public UserinfoDo()

        { conn=new SqlConnection(con);

        conn.Open();

        }

        我們把創(chuàng)建連接放到其構(gòu)造方法中,是為了在初始化的時候,自動創(chuàng)建連接。

        ⑵ 按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加密的實現(xiàn)

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

        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);

        }

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

        using System.Security.Cryptography;

        4.3 登錄的實現(xiàn)

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

        圖8 登錄窗口

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

        圖9 密碼錯誤提示框

        其相應(yīng)的驗證即密碼加密的代碼如下:

        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("請仔細確認賬號密碼");

        }

        當?shù)卿洺晒髸M入信息顯示界面,若失敗會給出相應(yīng)的提示。這些代碼都寫在登錄按鈕的點擊事件中。

        4.4 注冊的實現(xiàn)

        注冊界面如圖10所示。

        圖10 注冊窗體

        當注冊成功或因ID重復(fù)注冊而失敗,都會有相應(yīng)的窗口提示。

        代碼的實現(xiàn)如下:

        { 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("賬號重復(fù)");

        }

        }

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

        4.5 信息顯示的實現(xiàn)

        信息顯示界面,主要是顯示數(shù)據(jù)庫中的內(nèi)容,如圖11所示。

        圖11 信息顯示窗體

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

        確認修改:{

        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();

        }

        代碼都是寫在相對應(yīng)按鈕的點擊事件中。

        5 結(jié)束語

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

        參考文獻:

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

        出版社,2011:1146-1147

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

        1999.7.

        [3] 施衛(wèi)鋒,周俊,朱利剛.多戶住處系統(tǒng)中數(shù)據(jù)安全性控制機器及其實

        現(xiàn)[J].微機發(fā)展,2003.1.

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

        [5] 陳建熊,劉克勝;數(shù)據(jù)加密技術(shù)及其應(yīng)用[J].安徽電子信息職業(yè)技術(shù)

        學(xué)院學(xué)報,2004.Z1.

        猜你喜歡
        窗體控件賬號
        彤彤的聊天賬號
        施詐計騙走游戲賬號
        派出所工作(2021年4期)2021-05-17 15:19:10
        試談Access 2007數(shù)據(jù)庫在林業(yè)檔案管理中的應(yīng)用
        檔案天地(2019年5期)2019-06-12 05:12:02
        關(guān)于.net控件數(shù)組的探討
        軟件(2018年7期)2018-08-13 09:44:42
        Google Play游戲取消賬號綁定沒有Google賬號也能玩
        CHIP新電腦(2016年3期)2016-03-10 14:52:50
        基于LayeredWindow的異形窗體局部刷新
        中文信息(2014年2期)2014-03-06 23:49:14
        巧設(shè)WPS窗體控件讓表格填寫更規(guī)范
        就這樣玩會VBA中常見的自定義控件
        電腦迷(2012年24期)2012-04-29 00:44:03
        WinCE.net下圖形用戶界面的開發(fā)
        在PowerBuUder中利用WinSock控件制作簡單的Web服務(wù)器
        国产三级黄色的在线观看 | 久久精品人妻一区二三区| 91视色国内揄拍国内精品人妻| 国产在线无码精品无码| 女色av少妇一区二区三区| 日韩少妇内射免费播放18禁裸乳| 亚洲国产精品毛片av不卡在线| 精品国精品无码自拍自在线| 欧美性一区| 少妇特殊按摩高潮不断| 日本高清视频一区二区| 中国久久久一级特黄久久久| 久久婷婷五月国产色综合| 中国老熟妇自拍hd发布| 国产成人无码一二三区视频| 无码伊人久久大杳蕉中文无码| 免费人妻精品区一区二区三| 亚洲无精品一区二区在线观看| 日韩精品人妻中文字幕有码| 国精产品推荐视频| 欧美情侣性视频| 在线观看av国产自拍| 黑人一区二区三区啪啪网站| 中文字幕综合一区二区| 中文字幕无线码一区二区| 亚洲精品国偷拍自产在线麻豆| 久久久久亚洲av无码网站| 久久亚洲中文字幕精品一区四| 国产一区二区三区在线爱咪咪| 99久久精品在线视频| 97久久综合区小说区图片区| 成人免费看吃奶视频网站| 婷婷丁香社区| 深夜福利国产| 人妻少妇中文字幕专区| 亚洲国产高清精品在线| 成人aaa片一区国产精品| 久久久久久久无码高潮| 亚洲中文字幕精品久久久久久直播 | 亚洲av永久无码精品一福利| 影音先锋女人av鲁色资源网久久|