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