你的位置:首页 > ASP.net教程

[ASP.net教程]实践练习^运算符


【实例说明】

 本例关键点是练习使用^的使用,没有什么技术含量,大牛勿喷。呵呵。。


 在介绍实例之前先来剪短了解一下加密的概念。
 加密是指通过某种特殊的方法,更改已有信息的内容,使得未授权的用户即使得到了加密的信息,如果没有正确解密的方法,那么也无法得到信息的内容。

 谈到加密的话题,一些读者朋友一定非常感兴趣,而且会联想到复杂的加密算法,本实例只是使用异或"^"运算符简单的实现对数字加密的功能。

【关键技术】
 本实例实现时主要使用了“异或”运算符对数字进行“异或”运算,达到简单加密数字的目的,下面对其进行详细的讲解:

 本文主要使用的是加密数字,如果是文字等,可以将其转换为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("请输入数值!", "出现错误:");         }      }   }}关键代码