密码学之凯撒加密解密算法

来源:互联网 发布:c语言编译环境 编辑:程序博客网 时间:2024/05/15 23:52

在密码学中,凯撒(Caeser)密码(或称恺撒加密、恺撒变换、变换加密)是一种最简单且最广为人知的加密技术。它是一种替换加密的技术。

这个加密方法是以恺撒的名字命名的,当年恺撒曾用此方法与其将军们进行联系。

但是和所有的利用字母表进行替换的加密技术一样,恺撒密码非常容易被破解,而且在实际应用中也无法保证通信安全。

所以恺撒密码通常被作为其他更复杂的加密方法中的一个步骤。

凯撒密码的

  • 加密代换:
  • c = Ekey(m)  ≡ a, + key(mod 26) 0≤m≤25

  •         解密代换:
  • m = Dkey(c) ≡ c - key(mod 26) 0≤m≤25


过程比较简单,直接套公式

#include <stdio.h>#include <assert.h>//加密算法函数声明char *encode(char *c_str, int key);//解密算法函数声明char *decode(char *m_str, int key); //加密算法char *encode(char *c_str, int key){char *p_str = c_str;assert (c_str);while (*c_str){if (' ' == *c_str){++c_str;continue;}if ((*c_str < 'A') || (*c_str > 'Z'))assert(0);*c_str -= 'A';*c_str = (*c_str+key)%26;//加密核心算法*c_str += 'A';++c_str;}return p_str;}//解密算法char *decode(char *m_str, int key){char *p_str = m_str;assert (m_str);while (*m_str){if (' ' == *m_str){++m_str;continue;}if ((*m_str < 'A') || (*m_str > 'Z'))assert(0);*m_str -= 'A';*m_str += 26; //避免出现减key后,值为负数*m_str = (*m_str-key)%26;//解密核心算法*m_str += 'A';++m_str;}return p_str;}int main(){//存储明文char str[128] = "";int key = 0;//输入明文printf("输入一行明文:");gets(str);printf("输入秘钥:");scanf("%d", &key);//加密encode(str, key);//输出密文printf("密文:%s\n", str);//解密decode(str, key);//输出明文,检验是否解密成功printf("明文:%s\n", str);return 0;}


1 0
原创粉丝点击