【實(shí)例說(shuō)明】
本例關(guān)鍵點(diǎn)是練習(xí)使用^的使用,沒(méi)有什么技術(shù)含量,大牛勿噴。呵呵。。
在介紹實(shí)例之前先來(lái)剪短了解一下加密的概念。 加密是指通過(guò)某種特殊的方法,更改已有信息的內(nèi)容,使得未授權(quán)的用戶即使得到了加密的信息,如果沒(méi)有正確解密的方法,那么也無(wú)法得到信息的內(nèi)容。 談到加密的話題,一些讀者朋友一定非常感興趣,而且會(huì)聯(lián)想到復(fù)雜的加密算法,本實(shí)例只是使用異或"^"運(yùn)算符簡(jiǎn)單的實(shí)現(xiàn)對(duì)數(shù)字加密的功能。【關(guān)鍵技術(shù)】 本實(shí)例實(shí)現(xiàn)時(shí)主要使用了“異或”運(yùn)算符對(duì)數(shù)字進(jìn)行“異或”運(yùn)算,達(dá)到簡(jiǎn)單加密數(shù)字的目的,下面對(duì)其進(jìn)行詳細(xì)的講解:
本文主要使用的是加密數(shù)字,如果是文字等,可以將其轉(zhuǎn)換為byte、然后進(jìn)行加密后再轉(zhuǎn)回來(lái),即可實(shí)現(xiàn)加密,解密的話將其轉(zhuǎn)為byte、計(jì)算后再轉(zhuǎn)回來(lái)即可。
很多簡(jiǎn)單的注冊(cè)機(jī)既是使用PCId、硬盤(pán)ID等組合后加密實(shí)現(xiàn)的注冊(cè)碼。
“異或”運(yùn)算符"^"用于比較兩個(gè)二進(jìn)制數(shù)的相應(yīng)位。在執(zhí)行按位"異或"運(yùn)算是,如果兩個(gè)二進(jìn)制數(shù)的相應(yīng)位都為1或兩個(gè)二進(jìn)制數(shù)的相應(yīng)位都為0,則返回0;如果兩個(gè)二進(jìn)制數(shù)的相應(yīng)位其中一個(gè)為1另一個(gè)為0,則返回1。 現(xiàn)在來(lái)了解一下使用“異或”加密或解密的執(zhí)行過(guò)程,數(shù)值23轉(zhuǎn)換為二進(jìn)制位10111,加密數(shù)字的數(shù)值15轉(zhuǎn)換為1111. 對(duì)比兩個(gè)二進(jìn)制數(shù)的值,從右向左按位對(duì)比,如果兩個(gè)二進(jìn)制數(shù)的相應(yīng)位都為1或兩個(gè)二進(jìn)制數(shù)的相應(yīng)位都為0,則返回0,;如果兩個(gè)二進(jìn)制數(shù)的相應(yīng)位中一個(gè)為1,另一個(gè)為0,則返回1. 最后得到加密結(jié)果24于數(shù)字15進(jìn)行“異或”運(yùn)算,將24轉(zhuǎn)換二進(jìn)制為11000,將15轉(zhuǎn)換二進(jìn)制為1111,進(jìn)行“異或”運(yùn)算后,得到結(jié)果為23,這樣有還原了加密的數(shù)據(jù)。【設(shè)計(jì)過(guò)程】 (1) 打開(kāi)Visual Studio,新建Windows窗體應(yīng)用程序,命名為Encrypt。 (2)更改默認(rèn)窗體Form1的Name屬性為FrmEncrypt。窗體布局如下所示:
關(guān)鍵源碼如下:

1 using System; 2 using System.Collections.Generic; 3 using System.ComponentModel; 4 using System.Data; 5 using System.Drawing; 6 using System.Linq; 7 using System.Text; 8 using System.Windows.Forms; 9 10 namespace Encrypt11 {12 public partial class FrmEncrypt : Form13 {14 public FrmEncrypt()15 {16 InitializeComponent();17 }18 19 PRivate void btn_Encrypt_Ok_Click(object sender, EventArgs e)20 {21 int P_int_Num, P_int_Key;22 if (int.TryParse(this.txt_Num.Text, out P_int_Num) && int.TryParse(this.txt_Key.Text, out P_int_Key))23 {24 this.txt_Encrypt_1.Text = this.txt_Encrypt_2.Text = (P_int_Num ^ P_int_Key).ToString();25 }26 else27 {28 MessageBox.Show("請(qǐng)輸入數(shù)值!", "出現(xiàn)錯(cuò)誤:");29 }30 }31 32 private void btn_Revert_Ok_Click(object sender, EventArgs e)33 {34 int P_int_Key, P_int_Encrypt;35 if (int.TryParse(this.txt_Encrypt_2.Text, out P_int_Key) && int.TryParse(this.txt_Key.Text, out P_int_Encrypt))36 {37 this.txt_Revert.Text = (P_int_Encrypt ^ P_int_Key).ToString();38 }39 else40 {41 MessageBox.Show("請(qǐng)輸入數(shù)值!", "出現(xiàn)錯(cuò)誤:");42 }43 }44 }45 }關(guān)鍵代碼【來(lái)自:[LonelyShadow博客] http://m.survivalescaperooms.com/LonelyShadow】
新聞熱點(diǎn)
疑難解答
圖片精選
網(wǎng)友關(guān)注