實踐練習^運算符 - 使用^運算符對內容進行加密

来源:http://www.cnblogs.com/shouce/archive/2016/01/09/5115418.html
-Advertisement-
Play Games

【實例說明】 本例關鍵點是練習使用^的使用,沒有什麼技術含量,大牛勿噴。呵呵。。 在介紹實例之前先來剪短瞭解一下加密的概念。 加密是指通過某種特殊的方法,更改已有信息的內容,使得未授權的用戶即使得到了加密的信息,如果沒有正確解密的方法,那麼也無法得到信息的內容。 談到加密的話題,一些讀者朋友一定非常...


【實例說明】

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


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

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

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

 本文主要使用的是加密數字,如果是文字等,可以將其轉換為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("請輸入數值!", "出現錯誤:");
               }
          }
     }
}

關鍵代碼

  

 


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 題目:取一個整數a從右端開始的4~7位。程式分析:可以這樣考慮:(1)先使a右移4位。(2)設置一個低4位全為1,其餘全為0的數。可用~(~0>4;c=~(~0<<4);d=b&c;printf("%o\n%o\n",a,d);}
  • haha,貪心,邊界條件折騰了我一會兒 1 #include 2 #include 3 #include 4 #include 5 using namespace std ; 6 7 const int MAXN = 1000000 + 200 ; 8 int N , K ; 9 int dis ....
  • 轉自:http://www.haorooms.com/post/gem_not_use最近在安裝SASS的時候,用到gem命令,但是運行出行如下錯誤!C:\Users\len>gem install sassERROR: While executing gem ... (Gem::RemoteFe....
  • using (Ajax.BeginForm("GetBasicInformation", "Employee", //new AjaxOptions { UpdateTargetId = "basicInfo", //設置HTML元素的ID,從伺服器接收的內容將被插入到該元素中LoadingElem...
  • live() 與bind()作用基本一樣。 最重要區別:live()可以將事件綁定到當前和將來的元素(eg:為id=zy元素綁定點擊事件,而當你用js動態生成一個節點並插入到dom文檔結構中時,如果你是用bind()綁定的,怎麼新插入的節點將不會有該bind綁定事件。而live()則可以); ...
  • 一,c#中的值類型和引用類型 眾所周知在c#中有兩種基本類型,它們分別是值類型和引用類型;而每種類型都可以細分為如下類型: 什麼是值類型和引用類型什麼是值類型:進一步研究文檔,你會發現所有的結構都是抽象類型System.ValueType的直接派生類,而System.ValueType本身又是直接....
  • 一、前言 AgileEAS.NET SOA 中間件平臺是一款基於基於敏捷並行開發思想和Microsoft .Net構件(組件)開發技術而構建的一個快速開發應用平臺。用於幫助中小型軟體企業建立一條適合市場快速變化的開發團隊,以達到節省開發成本、縮短開發時間,快速適應市場變化的目的。 AgileEAS....
  • 1. ExcelUtility功能:  1.將數據導出到EXCEL(支持XLS,XLSX,支持多種類型模板,支持列寬自適應)  類名:ExcelUtility. Export  2.將EXCEL數據導入到數據對象中(DataTable、Dataset,支持XLS,XLSX) ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...