位^运算符干活分享 如何使用^运算符对内容进行加密
【实例说明】
本例关键点是练习使用^的使用,没有什么技术含量,大牛勿喷。呵呵。。
在介绍实例之前先来剪短了解一下加密的概念。
加密是指通过某种特殊的方法,更改已有信息的内容,使得未授权的用户即使得到了加密的信息,如果没有正确解密的方法,那么也无法得到信息的内容。
谈到加密的话题,一些读者朋友一定非常感兴趣,而且会联想到复杂的加密算法,本实例只是使用异或"^"运算符简单的实现对数字加密的功能。
【关键技术】
本实例实现时主要使用了“异或”运算符对数字进行“异或”运算,达到简单加密数字的目的,下面对其进行详细的讲解:
本文主要使用的是加密数字,如果是文字等,可以将其转换为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。窗体布局如下所示:

关键源码如下:
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 Encrypt 11 { 12 public partial class FrmEncrypt : Form 13 { 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 else 27 { 28 MessageBox.Show("请输入数值!", "出现错误:"); 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 else 40 { 41 MessageBox.Show("请输入数值!", "出现错误:"); 42 } 43 } 44 } 45 }
本文来源 我爱IT技术网 http://www.52ij.com/jishu/5493.html 转载请保留链接。
- 评论列表(网友评论仅供网友表达个人看法,并不表明本站同意其观点或证实其描述)
-
