NOIP201205Vigenère密码

【问题描述】 
  16 世纪法国外交家Blaise de Vigenère设计了一种多表密码加密算法——Vigenère密码。Vigenère 密码的加密解密算法简单易用,且破译难度比较高,曾在美国南北战争中为
南军所广泛使用。 
  在密码学中,我们称需要加密的信息为明文,用 M 表示;称加密后的信息为密文,用C 表示;而密钥是一种参数, 是将明文转换为密文或将密文转换为明文的算法中输入的数据,记为k。 在Vigenère密码中, 密钥k是一个字母串, k=k1k2…kn。当明文M=m1m2…mn时,得到的密文C=c1c2…cn,其中ci=mi®ki,运算®的规则如下表所示: 
 
  Vigenère加密在操作时需要注意: 
1.  ®运算忽略参与运算的字母的大小写,并保持字母在明文 M中的大小写形式; 
2.  当明文M的长度大于密钥k的长度时,将密钥k 重复使用。 
例如,明文M=Helloworld,密钥k=abc 时,密文C=Hfnlpyosnd。 
明文  H  e  l  l  o  w  o  r  l  d 
密钥  a  b  c  a  b  c  a  b  c  a 
密文  H  f  n  l  p  y  o  s  n  d 
 
【输入】 
输入文件名为vigenere.in。 
输入共2行。 
第一行为一个字符串,表示密钥k,长度不超过100,其中仅包含大小写字母。第二行
为一个字符串,表示经加密后的密文,长度不超过1000,其中仅包含大小写字母。 
 
【输出】 
输出文件名为vigenere.out。 
输出共1行,一个字符串,表示输入密钥和密文所对应的明文。 
 
【输入输出样例】

vigenere.in vigenere.out
CompleteVictory
Yvqgpxaimmklongnzfwpvxmniytm
Wherethereisawillthereisaway

【数据说明】 
对于 100%的数据,输入的密钥的长度不超过 100,输入的密文的长度不超过 1000,且都仅包含英文字母。

 #include<iostream>
#include<cstring>
using namespace std;
int main()
{
int w[],i,lk,lh;
char k[],h[],ans[];
cin>>k>>h;
lk=strlen(k);
lh=strlen(h);
for(i=;i<lk;i++)
{
if(k[i]>='a')w[i]=k[i]-'a';
else w[i]=k[i]-'A';
}
i=;
while(i<lh)
{
ans[i]=h[i]-w[i%lk];
if((ans[i]<'A')||(ans[i]<'a'&&h[i]>='a'))ans[i]=ans[i]+;
cout<<ans[i];
i++;
}
}

NOIP201205Vigenère密码的更多相关文章

  1. 对抗密码破解 —— Web 前端慢 Hash

    (更新:https://www.cnblogs.com/index-html/p/frontend_kdf.html ) 0x00 前言 天下武功,唯快不破.但在密码学中则不同.算法越快,越容易破. ...

  2. 当忘记mysql数据库密码时如何进行修改

    因为长时间没有使用数据库了,或者把密码改完之后就忘了数据库密码,不能正常进入数据库,也无法修改密码,有一个简单的常用修改密码方式: 1.首先找到和打开mysql.exe和mysqld.exe所在的文件 ...

  3. 【WCF】使用“用户名/密码”验证的合理方法

    我不敢说俺的方法是最佳方案,反正这世界上很多东西都是变动的,正像老子所说的——“反(返)者,道之动”.以往看到有些文章中说,为每个客户端安装证书嫌麻烦,就直接采用把用户名和密码塞在SOAP头中发送,然 ...

  4. Centos 下 mysql root 密码重置

    重置mysql密码的方法有很多,官网也提供了很方便的快捷操作办法,可参考资料 resetting permissions .本文重置密码的具体步骤如下: 一.停止MySQL(如果处于运行状态) #se ...

  5. CentOS7 重置root密码

    1- 在启动grub菜单,选择编辑选项启动 2 - 按键盘e键,来进入编辑界面 3 - 找到Linux 16的那一行,将ro改为rw init=/sysroot/bin/sh 4 - 现在按下 Con ...

  6. Mac上MySQL忘记root密码且没有权限的处理办法&workbench的一些tips (转)

    忘记Root密码肿么办 Mac上安装MySQL就不多说了,去mysql的官网上下载最新的mysql包以及workbench,先安装哪个影响都不大.如果你是第一次安装,在mysql安装完成之后,会弹出来 ...

  7. 从c#角度看万能密码SQL注入漏洞

    以前学习渗透时,虽然也玩过万能密码SQL注入漏洞登陆网站后台,但仅仅会用,并不理解其原理. 今天学习c#数据库这一块,正好学到了这方面的知识,才明白原来是怎么回事. 众所周知的万能密码SQL注入漏洞, ...

  8. C# 用SoapUI调试WCF服务接口(WCF中包含用户名密码的验证)

    问题描述: 一般调试wcf程序可以直接建一个单元测试,直接调接口. 但是,这次,我还要测试在接口内的代码中看接收到的用户名密码是否正确,所以,单一的直接调用接口方法行不通, 然后就想办法通过soapU ...

  9. 信息安全-2:python之hill密码算法[原创]

    转发注明出处:http://www.cnblogs.com/0zcl/p/6106513.html 前言: hill密码算法我打算简要介绍就好,加密矩阵我用教材上的3*3矩阵,只做了加密,解密没有做, ...

随机推荐

  1. jq 拖拽

    1.尼玛, move事件的时候忘了加ev,找了一个多小时 <!DOCTYPE html> <html> <head lang="en"> < ...

  2. 导入maven工程并配置maven环境

    步骤一 : 选择 "Import"操作 有两个途径可以选择 "Import"操作; 1>"File"--> "Impo ...

  3. iOS获取的NSDate date时间与实际相差8个小时

    NSDate *startDate = [NSDate date];NSTimeZone *zone = [NSTimeZone systemTimeZone];NSInteger interval ...

  4. php自定义错误处理和try{}catch(){}学习

    <?php //语法错误 //运行时的错误 //逻辑错误 //php的错误报告级别 // display_errors; // ini_set("display_errors" ...

  5. Python开发【第二章】:Python的数据类型

    基本数据类型 一.整型 如: 18.73.84 整型具备如下功能: class int(object): """ int(x=0) -> int or long i ...

  6. 删除docker私有库镜像

    不断往私库里push image,发现里面大多数镜像已经版本过旧,用不到了,所以决定删除私库里那些没用的镜像. Docker registry默认提供了一个仓库清理的url,如下:可以删除镜像ubun ...

  7. 微信支付开发(2) 静态链接Native支付

    关键字:微信支付 微信支付v3 native支付 统一支付 Native支付 prepay_id 作者:方倍工作室原文: http://www.cnblogs.com/txw1958/p/wxpayv ...

  8. jquery-cookie插件怎么读写json数据

    需要先转换下jsonvar jsonStr = JSON.stringify(obj);把jsonStr存进cookie用的时候取出来 obj=JSON.parse(jsonStr);

  9. 5、JavaScript进阶篇②——函数、事件、内置对象

    一.函数 1. 什么是函数 函数的作用,可以写一次代码,然后反复地重用这个代码. 如:我们要完成多组数和的功能. var sum; sum = 3+2; alert(sum); sum=7+8 ; a ...

  10. [转] [环境搭建] VS-Visual Studio-IIS Express 支持局域网访问

    ------------------------------------------- 更正, 我发现Program一项只设置为iisexpress.exe是不可行的. 只能设置为Any才行(当然这是 ...