14456 - Vigenère Cipher Decoder   

Description

Vigenère Cipher是一個用一系列的Caesar Cipher來加密文字的演算機制;根據一個設定好的keyword,可以透過以下的表格來進行文字的加密以及解密

 

(Excerpted from wiki: https://en.wikipedia.org/wiki/Vigen%C3%A8re_cipher)

 

舉例:

  • 如果加密過後的文字為LXFOPVEFRNHR,且使用的keywordLEMON,透過以下步驟可以將文字解密:

  1. 先將keyword的長度複製對應到加密文字的長度

  2. 將加密文字與對應到的keyword進行解密

  3. 解密後即可得出原始未加密的文字

 

Ciphertext: LXFOPVEFRNHR

Keyword: LEMONLEMONLE

Plaintext: ATTACKATDAWN

 

給定一個keyword字串,和一個加密過後的text字串;請試著找出原始未加密的文字字串為何


 

給定主要執行程式main.c (題號.c)、以及Header檔function.h (題號.h);請試著完成Header檔中未實現的函式:vigenereDecrypt()

 

Methods:

- void vigenereDecrypt(int text_length, char *textPtr, char keyword[25]) – 將傳入參數textLengthtext字串的長度)、 textPtrtext字串的第一個位址的指標)和 keyword ; 找出原始未加密的字串

 

hint:

  1. 可以透過textPtr++來取得下一個元素,並對其修改

function.c

 

#include "function.h"
 
void vigenereDecrypt(int text_length, char *textPtr, char keyword[25]) {
    // TODO
}

Input

兩個字串 keyword, text,分別代表加密時所需要的keyword和加密過後的字串

 

Note:

  1. keywordtext只包含大寫的英文字母

  2. 1 <= keyword字串的長度 <= 24;1 <= text字串的長度 <= 600

  3. 無需處理輸入

Output

輸出比須符合以下格式:

PT

 

Note:

  1. 無需處理輸出

Sample Input  Download

Sample Output  Download

Partial Judge Code

14456.c

Partial Judge Header

14456.h

Tags




Discuss