P1079 Vigenère 密码

2024-08-23 15:48
文章标签 密码 re vigen p1079

本文主要是介绍P1079 Vigenère 密码,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

题目地址


注意点:

  • 写完一段代码后应当先进行一次静态查错.

#include<cstdio>
#include<iostream>
#include<cstring>
using namespace std;
const int MAXN=2e3;
bool isCapital(char val){//是否大写 if(val>='A'&&val<='Z')return 1;else return 0;
}
char toUpperCase(char val){//转换为大写 if(isCapital(val))return val;return (val-32);
}
char toLowwerCase(char val){if(!isCapital(val))return val;return (val+32);
}
char vigenere[52][52];//密码表(key 密文) 
void init(){//初始化密码表 for(int i='A';i<='Z';i++){//列 int nowI=i-'A';for(int j='A';j<='Z';j++){//行 int nowJ=j-'A';vigenere[nowI][nowJ]='A'+nowI+nowJ;if(vigenere[nowI][nowJ]>'Z')vigenere[nowI][nowJ]-=26;}}
} 
char getClearText(char key,char nowCipherChar){//通过密钥和密文获取明文 bool isCap=isCapital(nowCipherChar);//密文是否为大写 char cipher=toUpperCase(nowCipherChar);key=toUpperCase(key);char nowVal;for(int j='A'-'A';j<='Z'-'A';j++){nowVal=vigenere[key-'A'][j];if(nowVal==cipher){nowVal=j+'A';break;}}if(isCap)return nowVal;else return toLowwerCase(nowVal);
}
char keyText[MAXN],cipherText[MAXN],clearText[MAXN];
int main(){init();cin>>keyText>>cipherText;int keyUseCnt=0;//密码使用次数 for(int i=0;i<strlen(cipherText);i++){int nowVal=cipherText[i];keyUseCnt%=strlen(keyText);int nowKey=keyText[keyUseCnt];cout<<getClearText(nowKey,nowVal);keyUseCnt++;}cout<<endl;return 0;
}

 

这篇关于P1079 Vigenère 密码的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1099812

相关文章

【测试】输入正确用户名和密码,点击登录没有响应的可能性原因

目录 一、前端问题 1. 界面交互问题 2. 输入数据校验问题 二、网络问题 1. 网络连接中断 2. 代理设置问题 三、后端问题 1. 服务器故障 2. 数据库问题 3. 权限问题: 四、其他问题 1. 缓存问题 2. 第三方服务问题 3. 配置问题 一、前端问题 1. 界面交互问题 登录按钮的点击事件未正确绑定,导致点击后无法触发登录操作。 页面可能存在

超级 密码加密 解密 源码,支持表情,符号,数字,字母,加密

超级 密码加密 解密 源码,支持表情,符号,数字,字母,加密 可以将表情,动物,水果,表情,手势,猫语,兽语,狗语,爱语,符号,数字,字母,加密和解密 可以将文字、字母、数字、代码、标点符号等内容转换成新的文字形式,通过简单的文字以不同的排列顺序来表达不同的内容 源码截图: https://www.httple.net/152649.html

mysql导出导入数据和修改登录密码

导出表结构: mysqldump -uroot -ppassword -d dbname tablename>db.sql; 导出表数据: mysqldump -t dbname -uroot -ppassword > db.sql 导出表结构和数据(不加-d): mysqldump -uroot -ppassword dbname tablename > db.sql;

Ubuntu 环境下ssh的安装、使用以及免密码登录

以两台机器为例:     A12.12.10.11B12.12.10.13 安装: Ubuntu默认安装了ssh客户端,只需要在被登录的机器上安装ssh服务器即可: $ sudo apt-get install openssh-server     启动ssh服务器: $ sudo /etc/init.d/ssh start 查看是否启动成功: $ ps -ef |grep

ubuntu 20.04 一直卡在登录界面,即使密码正确也无法登录(失败记录)

ubuntu 20.04 一直卡在登录界面,即使密码正确也无法登录 这次是装实体机,一次失败的尝试。。。 名称型号CPUIntel Xeon E5-2673 V3GPURTX 3060 mobile 安装的时候不要选install third-party software for graphics and Wi-fi hardware and additional media

oracle密码维护

查看密码是否可以重复使用 SQL> select PROFILE,RESOURCE_NAME,LIMIT from dba_profiles where profile='DEFAULT' and resource_type ='PASSWORD'; PROFILE                        RESOURCE_NAME                    LIMIT ----

【网络安全】古典密码体制概述

1. 古典密码体制概述 1.1 定义与历史背景 古典密码体制是指在计算机科学和信息安全技术出现之前的传统加密方法。这些方法主要包括替换和易位两种基本形式。古典密码体制的特点是简单、易用,但安全性不高,容易被破解。在古代,人们使用纸、笔或简单的器械来实现加密和解密操作。 定义:古典密码体制是基于简单数学运算和文字替换的加密方法,包括替代密码和置换密码两大类。历史背景:古典密码的使用可以追溯到古

vsftpd配置用户和密码让其他客户端连接

一、第一个主机:vsftpd下载及配置 前置准备: #卸载防火墙yum -y remove firewalld#为了不让防火墙有影响,iptables配置也清空iptables -Fvim /etc/selinux/confSELINUX=disabled #主要是把它改为disabled或者permissiveSELINUXTYPE=targeted#重启linux让selin

013.Python爬虫系列_re正则解析

我 的 个 人 主 页:👉👉 失心疯的个人主页 👈👈 入 门 教 程 推 荐 :👉👉 Python零基础入门教程合集 👈👈 虚 拟 环 境 搭 建 :👉👉 Python项目虚拟环境(超详细讲解) 👈👈 PyQt5 系 列 教 程:👉👉 Python GUI(PyQt5)文章合集 👈👈 Oracle数据库教程:👉👉 Oracle数据库文章合集 👈👈 优