1. 程式人生 > >使用C#編寫帶有圖形介面的凱撒密碼解密和加密

使用C#編寫帶有圖形介面的凱撒密碼解密和加密

編寫的程式有對字串加密和解密的功能

對字串的加密即是對每個字元往後偏移K值(例如K為2):

A->C    C->E   a->c   c->e

Z->B     z->b

而對字串的解密即是對每個字元往前偏移K值(例如K為2):

A->Y   Y->W  a->y   y->w

Z->X   z->x

接下來我們需要考慮程式的具體實現:

首先我們需要把輸入的字串儲存下來;

然後遍歷字串中每個字元,在遍歷的工程中我們需要對每個字元的ASCII加K(或減K)並儲存

遍歷時我們需要注意兩點 :

     一是過濾掉空格 我們只需要在每次遍歷的一開始加上if判斷,判斷字元是否為空格如果是空格我們不執行任何程式碼,不是空格執行下面程式碼

     二是 要考慮到如果 字元的ascill加上K值超出了26個字母的ASCII碼的範圍,我們則需要計算出超出的值並在A或a的ASCII值上加上對應的超出值;如果是字元的ascill減去K值超出了26個字母的ASCII碼的範圍,我們則需要計算出超出的值並在Z或z的ASCII值上減去對應的超出值

最後我們需要強制轉換把字元的int型轉換成char,這樣才能顯示出字元。

首先我們要先畫一個圖形介面

如圖(簡單點就行大笑):


這裡的K值是偏移量 加密的話就是往後偏移K個位置 解密就是往前偏移K個位置

然後我們雙擊加密按鈕加入Form1.cs編寫程式碼:

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

namespace 凱撒密碼
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            // while (true)//直接將程式放入死迴圈,方便做測試
            output.Clear();
            jiami();


        }
        public void jiami()
        {
            string inPut = insert.Text;//定義一個字串,接收使用者的輸入  

            int key = Convert.ToInt32(Kcode.Text) % 26;
            char res;
            foreach (char c in inPut)//遍歷字串  
            {
                if (c != 32)
                {
                    if (!char.IsUpper(c))
                    {
                        if (c + key > 122)
                        {
                            int a1 = c + key - 122;
                            res = Convert.ToChar(96 + a1);


                        }
                        else
                        {
                            res = Convert.ToChar(c + key);
                        }
                        output.AppendText(res.ToString());

                    }
                    if (char.IsUpper(c))
                    {
                        if (c + key > 90)
                        {
                            int a1 = c + key - 90;
                            res = Convert.ToChar(64 + a1);


                        }
                        else
                        {
                            res = Convert.ToChar(c + key);
                        }
                        output.AppendText(res.ToString());

                    }

                }

            }

        }
        public void jiemi1()
        {
            string inPut = insert.Text;//定義一個字串,接收使用者的輸入  

            int key = Convert.ToInt32(Kcode.Text) % 26;
            char res;
            foreach (char c in inPut)//遍歷字串  
            {
                if (c != 32)
                {
                    if (!char.IsUpper(c))
                    {
                        if (c - key < 97)
                        {
                            int a1 = 97-(c - key );
                            res = Convert.ToChar(123- a1);


                        }
                        else
                        {
                            res = Convert.ToChar(c - key);
                        }
                        output.AppendText(res.ToString());

                    }
                    if (char.IsUpper(c))
                    {
                        if (c - key < 65)
                        {
                            int a1 =65-(c - key);
                            res = Convert.ToChar(91- a1);


                        }
                        else
                        {
                            res = Convert.ToChar(c -key);
                        }
                        output.AppendText(res.ToString());

                    }

                }

            }

        }

        private void jiemi_Click(object sender, EventArgs e)
        {
            output.Clear();
            jiemi1();

        }
    }
}
這樣一個簡單的圖形介面凱撒密碼就做好了 如有不足 還請大神指教

相關推薦

使用C#編寫帶有圖形介面密碼解密加密

編寫的程式有對字串加密和解密的功能對字串的加密即是對每個字元往後偏移K值(例如K為2):A->C    C->E   a->c   c->eZ->B     z->b而對字串的解密即是對每個字元往前偏移K值(例如K為2):A->Y  

python實現密碼解密加密

def encryption(): str_raw = input("請輸入明文:") k = int(input("請輸入位移值:")) str_change = str_raw.lower() str_list = list(str_change) str

密碼解密指令碼(python)

def casearDecrypt(ciphertext, source_char, destination_char): offset = ord(destination_char) - ord(source_char) chars = "ab

密碼--簡單的加密解密

凱撒密碼–簡單的加密與解密 public class MyEncrypt { private static final int KEY = 3; public enum EncryptState { ENCRYPT,

古典密碼(密碼/維吉尼亞密碼/Play fair密碼/Hill密碼)的實現(MFC介面

void CEn_DeDlg::random_Matrix() { int i, j; for (i = 0; i < ROW; i++) { for (j = 0; j < COL; j++) { K[i][j]

密碼加密解密--JAVA實現(基礎)

soft ring java實現 sta 想是 clas pub sof print 凱撒密碼一種代換密碼,據說凱撒是率先使用加密函的古代將領之一,因此這種加密方法被稱為愷撒密碼。凱撒密碼的基本思想是:通過把字母移動一定的位數來實現加密和解密。明文中的所有字母都在字母表上向

字符串操作練習:星座、密碼、99乘法表、詞頻統計預處理

千分位 不足 last 乘法表 控制 ise 精度 end for 實例:輸出12個星座符號,以反斜線分隔。 for i in range(12): print(chr(9800+i),end="/") 愷撒密碼的編碼 sr1="abcdefghij

字符串操作練習:星座、密碼、99乘法表、詞頻統計預處

姓名 orm 99乘法表 不足 log inpu 輸入 print 實例 1 實例:輸出12個星座符號,以反斜線分隔。 >>>for i in range (12): >>>print(chr(9800+i),end=" ") 2

密碼、GDP格式化輸出、99乘法表

9.png images format spa 千分位 tex article ext log 愷撒密碼的編碼 plaincode = input(‘明文:‘) print(‘密文:‘,end=‘‘) for i in plaincode: print(chr(

密碼、GDP格式化輸出、九九乘法表

技術 九九乘法表 格式 images 總量 千分位 color {} 2.4 1、愷撒密碼的編碼 string =input(‘明文:‘) print(‘密文:‘,end=‘‘) for i in string: print(chr(ord(i)+3),end=‘

Python密碼密碼

代碼 ner 通過 sdn odi 完全 plain 密碼 http 凱撒密碼   寫出字母表的字母從A到Z的數字從0到25根據每個字母。A下面是0,B下面是1,等等,直到Z,下面為25.(有字母表中的26個字母,但我們的數字只上升到25,因為我們開始在0,而不是1):

密碼

tex end pla sage input proc text ext print plainText = input(‘message:‘) for d in plainText: print(chr(ord(d)+4),end=‘‘) message:

密碼學》 密碼柵格密碼(0)

inf 分享 align alt ont 加密技術 col img center 凱撒密碼(0) 在密碼學中,愷撒密碼(英語:Caesar cipher),或稱愷撒加密、愷撒變換、變換加密,是一種最簡單且最廣為人知的加密技術。它是一種替換加密的技術,明文中的所有字母都在字母

歷史著名密碼密碼、簡單替換密碼、Enigma)

凱撒密碼 公元前100多年凱撒發明的一種密碼,簡單來說是平移密碼,也就是將字母位置向後移動一定位數。 如原文是ABCDEFG,金鑰為3,加密後就是DEFGHIJ。 以金鑰的數字向後平移了三位,如果金鑰是5就是平移五位。 凱撒密碼最簡單的破譯方式為窮舉法(暴力破解法),一共只有26個字母,

密碼-CTF(Crypto)

題目:致敬經典 lrua{1uy3yj9l-yw9u-48j2-uuj8-36h03706y7u7} 解密 :題目的圖片是20020年的電影名為凱撒大帝,很明顯應該考慮是凱撒密碼,將a~z對應著1~26列出來,將明文對應上,可發現偏移量為6,偶數位左移,奇數位右移,程式碼實現不難,但需

C#編寫的登入介面

常用的C#小功能集錦 動態獲取系統當前時間** 使用DateTime結構的Now靜態屬性返回當前系統時間 DateTime P_dt = DateTime.Now; string P_str_dt = P_dt.Tostring( ); 根據兩個時間自動計算二個

Python實現密碼演算法及暴力破譯密碼演算法

一、凱撒加密法是什麼? 加密原理非常簡單,就是對字母表中的的每個字母,用它後面的第key個字母來代替。例如: 明文:meet me after the toga party 密文:PHHW PH

樹莓派圖形介面不知道密碼及無法登陸問題

今天登陸樹莓派的時候突然要求輸入登陸密碼,由於是從前任同事手中接到這塊板子所以不知道密碼是什麼,預設的密碼raspberry也不對,無奈之下只能進行重置密碼。 重置密碼的具體方法如下: 1,將板子上的sd卡取下來連入讀卡器使用電腦開啟 2,找到cmdline.t

使用js實現5種加密解密演算法(密碼、字母倒排序、單表置換、維基利亞、轉換加密演算法)

在學習作業系統的時候,我們會學到系統安全的章節,而在這一塊會有關於加密解密演算法的學習。 一共有5種常見的加密解密演算法:凱撒密碼、字母倒排序、單表置換、維基利亞、轉換加密演算法。  我使用了js實現了這5種演算法,而且做了視覺化處理、輸入輸出格式化處理,使得操作起來非常

[古典密碼]:Caesar cipher(密碼)

非常簡單的訊息編碼方式,僅僅是將字母后移3位,而X Y Z右移就回到A B C. 加密的話就是簡單的加三取模即可;解密就是其反過程。 C++實現如下: #include#include#includ