65.9K
CodeProject 正在变化。 阅读更多。
Home

加密和解密

starIconstarIconstarIcon
emptyStarIcon
starIcon
emptyStarIcon

3.36/5 (7投票s)

2009年3月24日

CPOL
viewsIcon

25500

downloadIcon

869

这是可以制作 Caesar 密码的软件。

引言

Ceasares 代码,用于加密文本和文本文件:)

背景

Using the Code

该软件是用阿尔巴尼亚语编写的。所以我们来解释一些阿尔巴尼亚语单词到英语。

ENKRIPTO 这个词 - 意思是加密,DEKRYPTO 意思是解密。CELESI 这个词 - 意思是密钥 -> 需要移动(位移)多少个字符,例如

A -> 到 C 意味着密钥为 2,ENKRIPTIMI dhe DEKRIPTIMI 意思是加密和解密

技巧在于凯撒的公式和密钥

类:Enkripto_Dekripto.cs

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace CESAR1
{
    public class Enkripto_Dekripto
    {
        private float karakteret;
        private string strBrowse;
        private int MemoriaCelesi;

        public int CelesiMemorik
        {

            set 
            {
                MemoriaCelesi = value;
            }
            get 
            {
                return MemoriaCelesi;
            }
        }


        public float k
        {
            set
            {
                karakteret = value;
            }
            get
            {
                return karakteret;
            }
        }

        public string str
        {
            set
            {
                strBrowse = value;
            }
            get
            {
                return strBrowse;
            }
        }

        public Enkripto_Dekripto()
        {
            karakteret = 0.0f;
            strBrowse = string.Empty;
            MemoriaCelesi = 0;
        }
    }
}

private void btnEnkripto_Click(object sender, EventArgs e)
{
    if (txtPlainText.Text.Length != 0)
    {
        txtEnkriptuar.Clear();
        int Total = txtPlainText.Text.Length;
        lblTekstiCH.Text = Total.ToString();
        char[] c;
        int p;
        int Celesi = Convert.ToInt16(txtCelesi.Text);
        c = txtPlainText.Text.ToCharArray(0, Total);
        objEnkDek.CelesiMemorik = Celesi;
        for (int i = 0; i < Total; i++)
        {
            if (c[i] > 64 && c[i] < 91)
            {
                objEnkDek.k = objEnkDek.k + 1;
                p = (char)c[i];
                p = p - 65;
                if ((Celesi >= 0) && (Celesi <= 26))
                {
                    p = p + Celesi;
                    p = p % 26;
                    p = p + 65;
                    c[i] = (char)p;
                }
                else
                {
                    MessageBox.Show("Celesi duhet te jete numer pozitiv mbrenda 0-26");
                    txtCelesi.Text = "0";
                    Celesi = 0; 
                }
            }
            else if (c[i] > 96 && c[i] < 123)
            {
                objEnkDek.k = objEnkDek.k + 1;
                p = (char)c[i];
                p = p - 97;
                if ((Celesi >= 0) && (Celesi <= 26))
                {
                    p = p + Celesi;
                    p = p % 26;
                    p = p + 97;
                    c[i] = (char)p;
                }
                else
                {
                    MessageBox.Show("Celesi duhet te jete numer pozitiv mbrenda 0-26");
                    txtCelesi.Text = "0";
                    Celesi = 0;
                }
            }

            txtEnkriptuar.AppendText(c[i].ToString());
        }
    }
    else
    {
        MessageBox.Show("Ju lutem Mbushni Text per te Enkriptuar");
    }
    lblEnCH.Text = txtEnkriptuar.Text.Length.ToString();
} 

private void btnDekripto_Click(object sender, EventArgs e)
{
    if (txtiEnkriptuar.Text.Length != 0)
    {
        txtDekriptuar.Clear();
        int Total = txtiEnkriptuar.Text.Length;
        lblEnD.Text = Total.ToString();
        char[] c;
        int p;
        int CelesiDE = Convert.ToInt16(txtCelesiDE.Text);
        CelesiDE = CelesiDE % 26;
        c = txtiEnkriptuar.Text.ToCharArray(0, Total);

        for (int i = 0; i < Total; i++)
        {
            if (c[i] > 64 && c[i] < 91)
            {
                p = (char)c[i];
                p = p - 65;
                if ((CelesiDE >= 0) && (CelesiDE <= 26))
                {
                    p = p - CelesiDE;
                    if (p < 0)
                    {
                        p = 26 + p;
                    }
                    p = p + 65;
                    c[i] = (char)p;

                }
                else
                {
                    MessageBox.Show("Celesi duhet te jete numer pozitiv mbrenda 0-26");
                    txtCelesiDE.Text = "0";
                    CelesiDE = 0;

                }

            }
            else if (c[i] > 96 && c[i] < 123)
            {
                p = (char)c[i];
                p = p - 97;
                if ((CelesiDE >= 0) && (CelesiDE <= 26))
                {
                    p = p - CelesiDE;
                    if (p < 0)
                    {
                        p = 26 + p;
                    }
                    p = p + 97;
                    c[i] = (char)p;

                }
                else
                {
                    MessageBox.Show("Celesi duhet te jetenumer pozitiv mbrenda 0-26");
                    txtCelesiDE.Text = "0";
                    CelesiDE = 0;
                }

            }
            txtDekriptuar.AppendText(c[i].ToString());
        }
    }
    lblDECH.Text = txtDekriptuar.Text.Length.ToString();
}

历史

待续

© . All rights reserved.