2017-02-25 127 views
-3

我目前正试图解密交给我的文本文件。我使用一个数组前:其中alphabet_size = 26比较,替换,匹配数组C++

char code[ALPHABET_SIZE] = {'i','z','t', 'o', 'h', 'n', 'd', 'b', 'e', 'q', 'r', 'k', 'g', 'l', 'm', 'a', 'c', 's', 'v', 'w' 
    , 'f', 'u', 'y', 'p', 'j', 'x',} 

使用包含此

ifqkwxcadf ar cei fpoi masif cd cei xkdqirr du pxxnwafm pf pnmdkaceo cd p oirrpmi, teaqe rqkpohnir cei gpcp af ac-oplafm ac sikw gauuaqvnc pfg caoi qdfrvoafm, au fdc xkpqcaqpnnw aoxdrrahni, cd gigvqi cei dkamafpn masif dfnw cei ifqdgig gpcp. afxvcr cd cei pnmdkaceo cwxaqpnnw afsdnsi pggacadfpn riqkic gpcp qpnnig liwr, teaqe xkisifcr cei oirrpmi ukdo hiafm giqdgig-isif au cei pnmdkaceo ar xvhnaqnw lfdtf. 

我已经试过是(不使用字符代码阵列破译另一个字符数组文件但使用if语句来检查,如果加密的消息[0] = 'A' 然后消息[0] = 'i' 的

for (int num = 0; message[num] != '\0'; num++) 
    { 
     if (message[num] == 'a') { message[num] = 'i'; } 
     if (message[num] == 'b') { message[num] = 'z'; } 
     if (message[num] == 'c') { message[num] = 't'; } 
     if (message[num] == 'd') { message[num] = 'o'; } 
     if (message[num] == 'e') { message[num] = 'h'; } 

但最终与另一怪异消息

elcujpjeml eu jbe lame geuel jm jbe pumceuu mf appljelg al algmuejbm jm a meuuage, jbecb ucuambleu jbe daja el ej-makelg ej ueuj deffeculj ald jeme cmluumelg, ef lmj puacjecallj empmuueble, jm deduce jbe muegelal geuel mllj jbe elcmded daja. elpuju jm jbe algmuejbm jjpecallj elumlue addejemlal uecuej daja called keju, jbecb pueuelju jbe meuuage fumm beelg decmded-euel ef jbe algmuejbm eu publeclj klmjl. 

等和子..(也就是说,每个“A”中输入的文本应改为一个“i”,每个“B”与“Z”,等等。)(消息包含我在那里显示的加密文本文件) 现在,我的问题是如何使用“字符代码数组”来加密“消息数组”基本上不知道这是否是正确的术语,但匹配和替换?任何帮助将是伟大的!先谢谢你。

+0

可能不是完整的答案,但至少将其转换为“else if”或在每个块中放一个'continue',否则如果这个字母是“a”,它会变成“i”,然后变成任何“i”变成等等,然后移动到下一个索引。调试器应该告诉你这一点。但除此之外,肯定有更好的方法。 – pinkfloydx33

回答

0

通过code数组使用索引。

for (int num = 0; message[num] != '\0'; num++) 
    if(isalpha(message[num])) 
     message[num] = code[message[num]-'a']; 

P.S:#include <ctype.h>isalpha功能。它在这里使用,因为您只想替换字母字符(并且您只使用小写字母)。

正如上面的评论,你的错误是,你不止一次地替换了一些字符,因为你没有使用else if

最后,这里是你的解密的明文:

加密是给将算法应用于消息,这打乱数据的过程中,将其命名为,使得它非常困难和耗费时间,如果不实际上不可能推导出仅给出编码数据的原始数据。对算法的输入通常涉及称为密钥的额外秘密数据,这妨碍了消息的解码 - 即使算法是公知的