密码学之凯撒加密解密算法
来源:互联网 发布: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
- 密码学之凯撒加密解密算法
- CTF密码学之凯撒解密
- 密码学之仿射加密解密算法
- JAVA加密解密之凯撒加密(Caesar cipher)算法
- JAVA之凯撒加密【解密】
- 凯撒密码,凯撒加密解密.
- 第四十九篇: JAVA加密解密之凯撒加密(Caesar cipher)算法
- 凯撒 加密 解密
- 密码学4——Java 加密解密之消息摘要算法(MD5 SHA MAC)
- 密码学4——Java 加密解密之消息摘要算法(MD5 SHA MAC)
- C++ 凯撒密码 加密解密
- 密码学之各种加解密算法比较
- 密码学之各种加解密算法比较
- 个人写的凯撒密码,加密解密
- 凯撒密码(加密与解密)
- 凯撒密码--简单的加密与解密
- 凯撒密码 C语言 加密解密
- 凯撒密码加密解密--JAVA实现(基础)
- RecycleView的实现
- [LeetCode]Find Right Interval(Java)
- 入手树莓派
- CodeForces 780B The Meeting Place Cannot Be Changed【二分】
- 网络获取数据sd卡读取
- 密码学之凯撒加密解密算法
- 使用 ffmpeg 进行网络推流:拉流->解封装->解码->处理原始数据(音频、视频)->编码->编码->推流
- Linux apache下导入SSL证书
- 《剑指offer》数组——二维数组中查找
- 如何使用Androidstudio实现中英手机信息页面
- 快速排序
- hdu 1014
- Fragment详解之六——如何监听fragment中的回退事件与怎样保存fragment状态
- HTTP协议相关知识