題目描述
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 加密在操作時需要注意:
®運算忽略參與運算的字母的大小寫,並保持字母在明文 m 中的大小寫形式;
當明文 m 的長度大於金鑰 k 的長度時,將金鑰 k 重複使用。
例如,明文 m=helloworld,金鑰 k=abc 時,密文 c=hfnlpyosnd。
輸入輸出格式
輸入格式:
輸入共 2 行。
第一行為乙個字串,表示金鑰 k,長度不超過 100,其中僅包含大小寫字母。第二行
為乙個字串,表示經加密後的密文,長度不超過 1000,其中僅包含大小寫字母。
輸出格式:
輸出共 1 行,乙個字串,表示輸入金鑰和密文所對應的明文。
輸入輸出樣例
輸入樣例#1:
completevictory
yvqgpxaimmklongnzfwpvxmniytm
輸出樣例#1:
wherethereisawillthereisaway
說明【資料說明】
對於 100%的資料,輸入的金鑰的長度不超過 100,輸入的密文的長度不超過 1000,且
都僅包含英文本母。
noip 2012 提高組 第一天 第一題
一道簡單的字串模擬題。。。
#include
#include
#include
using
namespace
std;
char key[101],mi[1001],ming[1001];
int main()
printf("%s\n",ming);
return
0;}
洛谷 P1079 Vigen re 密碼
題目描述 16 世紀法國外交家 blaise de vigen re 設計了一種多表密碼加密演算法 vigen re 密碼。vigen re 密碼的加密解密演算法簡單易用,且破譯難度比較高,曾在美國南北戰爭中為南軍所廣泛使用。在密碼學中,我們稱需要加密的資訊為明文,用 m 表示 稱加密後的資訊為密文...
洛谷P5049 洛谷P5022 題解 旅行
原題 資料加強版 加強版 參考你谷題解 終於調過了 又是一如既往的申必錯誤 noi plus石錘了 原題的資料允許我們 o n 2 暴力斷邊,但是加強版的資料達到了 n log n 級別,我們必須在斷邊這一環節尋求更好的解法。考慮我們進入環後在何處回溯 根據繼續走環走到的點分類 設當前已經從 b 走...
洛谷練習P2279 P1346
2020年,人類在火星上建立了乙個龐大的基地群,總共有n個基地。起初為了節約材料,人類只修建了n 1條道路來連線這些基地,並且每兩個基地都能夠通過道路到達,所以所有的基地形成了乙個巨大的樹狀結構。如果基地a到基地b至少要經過d條道路的話,我們稱基地a到基地b的距離為d。由於火星上非常乾燥,經常引發火...