Vernam密码
2024-08-26 13:48:03
Vernam加密法也称一次一密(One-Time-Pad),用随机的非重复的字符集合作为输出密文.这里最重要的是,一旦使用了变换的输入密文,就不再在任何其他消息中使用这个输入密文(因此是一次性的).输入密文的长度等于原消息明文的长度
#include ][]; ],key[],emessage[],retMessage[]; int findRow(char); int findColumn(char); int findDecRow(char,int); int main() { ,j,k,r,c; k=; ;i<;i++) { k++; ;j<;j++) { arr[i][j]=k++; ) k=; } } printf("\n输入明文\n"); gets(message); printf("\n输入密钥\n"); gets(key); // 加密 ;key[i]!=NULL;i++) { c=findRow(key[i]); r=findColumn(message[i]); emessage[i]=arr[r][c]; } emessage[i]='\0'; printf("\n 密文为:\n\n"); ;emessage[i]!=NULL;i++) printf("%c",emessage[i]); //解密 ;key[i]!=NULL;i++) { c=findColumn(key[i]); r=findDecRow(emessage[i],c); retMessage[i]=arr[r][]; } retMessage[i]='\0'; printf("\n\n解密后的明文为:\n\n"); ;retMessage[i]!=NULL;i++) printf("%c",retMessage[i]); ); } int findRow(char c) { int i; ;i<;i++) { ][i]==c) return(i); } } int findColumn(char c) { int i; ;i<;i++) { ]==c) return(i); } } int findDecRow(char c,int j) { int i; ;i<;i++) { if(arr[i][j]==c) return(i); } }
最新文章
- Windows下的Memcache安装 linux下的Memcache安装
- Mysql数据库的通用安装方法
- activiti搭建(三)整合Modeler
- Hadoop2.2.0 手动切换HA环境搭建
- Salt自动化之自动更新Gitfs-爱折腾技术网
- 如何判断一个变量是数组Array类型
- 关于工作中Git相关的总结
- python爬虫之MongoDB测试环境安装
- [转] 用webpack的CommonsChunkPlugin提取公共代码的3种方式
- 开源数据流管道-Luigi vs Azkaban vs Oozie vs Airflow
- 如果django里的视图是类(CBV),应该如何写Url的测试用例?
- JMeter4.0二次开发之导入eclipse
- linux常用命令:free 命令
- c# 操作Word总结【转】
- WebService与WCF
- leetcode819
- python 爬虫系列01-连接mysql
- 图像处理框架 Core Image 介绍
- activiti自己定义流程之自己定义表单(一):环境配置
- 前端:常见的6种HTML5错误用法