加密算法C#实现:凯撒密码

2.1 原理介绍

  凯撒密码是一种很古老的加密体制,主要是通过代换来达到加密的目的。其基本思想是:通过把字母移动一定的位数来实现加密和解密。移动位数就是加密和解密的密钥。

  举例说明,假设明文为“ABCD”,密钥设置为7,那么对应的密文就是“HIJK”。具体流程如下表所示:.

加密算法C#实现:凯撒密码

2.2 C#代码

// Caesar Cipher(凯撒密码)

public sealed class Caesar

{

    // 加密

    public static string CaesarEncrypt(string plaintext, int key)

    {

        // 字符串转换为字节数组

        byte[] origin = Encoding.ASCII.GetBytes(plaintext);

        string rst = null;

 

        for (int i = 0; i < origin.Length; i++)

        {

            // 获取字符ASCII码

            int asciiCode = (int)origin[i];

 

            // 偏移

            asciiCode += key;

            byte[] byteArray = new byte[] { (byte)asciiCode };

 

            // 将偏移后的数据转为字符

            ASCIIEncoding asciiEncoding = new ASCIIEncoding();

            string strCharacter = asciiEncoding.GetString(byteArray);

 

            // 拼接数据

            rst += strCharacter;

        }

        return rst;

    }

 

    // 解密

    public static string CaesarDecrypt(string ciphertext, int key)

    {

        // 字符串转换为字节数组

        byte[] origin = Encoding.ASCII.GetBytes(ciphertext);

        string rst = null;

 

        for (int i = 0; i < origin.Length; i++)

        {

            // 获取字符ASCII码

            int asciiCode = (int)origin[i];

 

            // 偏移

            asciiCode -= key;

            byte[] byteArray = new byte[] { (byte)asciiCode };

 

            // 将偏移后的数据转为字符

            ASCIIEncoding asciiEncoding = new ASCIIEncoding();

            string strCharacter = asciiEncoding.GetString(byteArray);

 

            // 拼接数据

            rst += strCharacter;

        }

        return rst;

    }

}