程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> C# >> C#入門知識 >> 實踐練習^運算符,實踐練習運算符

實踐練習^運算符,實踐練習運算符

編輯:C#入門知識

實踐練習^運算符,實踐練習運算符


【實例說明】

 本例關鍵點是練習使用^的使用,沒有什麼技術含量,大牛勿噴。呵呵。。


 在介紹實例之前先來剪短了解一下加密的概念。
 加密是指通過某種特殊的方法,更改已有信息的內容,使得未授權的用戶即使得到了加密的信息,如果沒有正確解密的方法,那麼也無法得到信息的內容。

 談到加密的話題,一些讀者朋友一定非常感興趣,而且會聯想到復雜的加密算法,本實例只是使用異或"^"運算符簡單的實現對數字加密的功能。

【關鍵技術】
 本實例實現時主要使用了“異或”運算符對數字進行“異或”運算,達到簡單加密數字的目的,下面對其進行詳細的講解:

 本文主要使用的是加密數字,如果是文字等,可以將其轉換為byte、然後進行加密後再轉回來,即可實現加密,解密的話將其轉為byte、計算後再轉回來即可。

 很多簡單的注冊機既是使用PCId、硬盤ID等組合後加密實現的注冊碼。


 “異或”運算符"^"用於比較兩個二進制數的相應位。在執行按位"異或"運算是,如果兩個二進制數的相應位都為1或兩個二進制數的相應位都為0,則返回0;如果兩個二進制數的相應位其中一個為1另一個為0,則返回1。

 現在來了解一下使用“異或”加密或解密的執行過程,數值23轉換為二進制位10111,加密數字的數值15轉換為1111.
 對比兩個二進制數的值,從右向左按位對比,如果兩個二進制數的相應位都為1或兩個二進制數的相應位都為0,則返回0,;如果兩個二進制數的相應位中一個為1,另一個為0,則返回1.
 最後得到加密結果24於數字15進行“異或”運算,將24轉換二進制為11000,將15轉換二進制為1111,進行“異或”運算後,得到結果為23,這樣有還原了加密的數據。

【設計過程】
 (1) 打開Visual Studio,新建Windows窗體應用程序,命名為Encrypt。
 (2)更改默認窗體Form1的Name屬性為FrmEncrypt。窗體布局如下所示:
使用^運算符對數字進行加密

 關鍵源碼如下:

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace Encrypt
{
     public partial class FrmEncrypt : Form
  {
          public FrmEncrypt()
          {
               InitializeComponent();
          }

          private void btn_Encrypt_Ok_Click(object sender, EventArgs e)
          {
               int P_int_Num, P_int_Key;
               if (int.TryParse(this.txt_Num.Text, out P_int_Num) && int.TryParse(this.txt_Key.Text, out P_int_Key))
               {
                    this.txt_Encrypt_1.Text = this.txt_Encrypt_2.Text = (P_int_Num ^ P_int_Key).ToString();
               }
               else
               {
                    MessageBox.Show("請輸入數值!", "出現錯誤:");
               }
          }

          private void btn_Revert_Ok_Click(object sender, EventArgs e)
          {
               int P_int_Key, P_int_Encrypt;
               if (int.TryParse(this.txt_Encrypt_2.Text, out P_int_Key) && int.TryParse(this.txt_Key.Text, out P_int_Encrypt))
               {
                    this.txt_Revert.Text = (P_int_Encrypt ^ P_int_Key).ToString();
               }
               else
               {
                    MessageBox.Show("請輸入數值!", "出現錯誤:");
               }
          }
     }
}

關鍵代碼

  

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved