请比较凯撒密码维吉尼亚密码普莱费尔密码的异同点(凯撒加密算法属于)

2023-03-16 21:23:57 密码用途 思思

比较凯撒密码维吉尼亚密码普莱费尔密码的异同点:

1、维吉尼亚密码是使用一系列凯撒密码组成密码字母表的加密算法,属于多表密码的一种简单形式。

2、凯撒密码作为一种最为古老的对称加密体制,在古罗马的时候都已经很流行,他的基本思想是:通过把字母移动一定的位数来实现加密和解密。

C语言凯撒加密是一种移位替代加密算法,即将字母表A-Z向左移位,然后用移位后的字母表替原来的明文得到密文

#include iostream

#include string

using namespace std;

int main()

{

    string code;//储存初始字符串

    string d_code;//加密后的字符串

    int i;

    int n;         //移位的个数

    cout"Enter the string "endl;

    cincode;

    cout"how many step do you want to move ?"endl;

    cinn;

    for(i=0;icode.size();++i)

    {

        if(int(code[i])97)

        {

            if(int(code[i])+n122)

              d_code[i]=int(code[i])+n-26;

            else

                d_code[i]=int(code[i])+n;

        }

        else if(int(code[i])+n90)

            d_code[i]=char(int(code[i])+n-26);

        else

            d_code[i]=char(int(code[i]+n));

    }

    for(i=0;icode.size();++i)

    {

        coutd_code[i];

    }

    coutendl;

    cout"Code = "codeendl;

    return 0;

}

凯撒加密算法(最简单的对称加密)

凯撒密码是罗马扩张时期朱利斯• 凯撒(Julius Caesar)创造的,用于加密通过信使传递的作战命令。它将字母表中的字母移动一定位置而实现加密。例如如果向右移动 2 位,则 字母 A 将变为 C,字母 B 将变为 D,…,字母 X 变成 Z,字母 Y 则变为 A,字母 Z 变为 B。

因此,假如有个明文字符串“Hello”用这种方法加密的话,将变为密文: “Jgnnq” 。而如果要解密,则只要将字母向相反方向移动同样位数即可。如密文“Jgnnq”每个字母左移两位 变为“Hello” 。这里,移动的位数“2”是加密和解密所用的密钥。

该程序既可用于加密又可用于解密。只要传入明文和偏移量即可加密,解密需要传入密文和负的偏移量就可以解密。

输出的结果:

凯撒密码由于加解密比较简单,密钥总共只有 26 个,攻击者得到密文后即使不知道密钥,也可一个一个地试过去,最多试 26 次就可以得到明文。

这里不光根据 offset 偏移进行加密,还加上了字符所在的下标进行混合加密。

输出的结果:

加密算法

漫画:什么是加密算法?

非常朴素的加密方法,被称为 凯撒密码

加密算法可以归结为三大类: 哈希算法 、 对称加密算法 、 非对称加密算法 。

哈希算法

从严格意义上来说, 哈希算法并不属于加密算法 ,但它在信息安全领域起到了很重要的作用。(MD5是单向生成信息摘要的算法)

哈希算法能做什么用呢?其中一个重要的作用就是 生成信息摘要 ,用以验证原信息的完整性和来源的可靠性。

对称加密算法

哈希算法可以解决验签的问题,却无法解决明文加密的问题。这时候,就需要真正的加密算法出场了。

非对称加密算法

windows下查看文件的MD5码

或者使用 HashMyFiles.exe 工具可以生成文件md5.: Calculate MD5/SHA1/CRC32 hash of files

凯撒算法是属于对称加密算法吗?

最早的公钥算法是有凯撒大帝发明的,所以也叫凯撒算法,凯撒算法是很简单的算法,它的学名是“单表替换算法”。就如同这个算法名称的字面意思一样,他把一个字母替换成另一个字母,比如:把 "a" 替换成 "b", "c" 替换成 "d" 以此类推, 直到把 "z" 替换成 "a",这里每个字母都备下一个字母替换,所以密钥就是1(如果密钥是2则把 "a" 替换成 "c")。

它不是对称加密算法!