我目前正在尝试破译传递给我的文本文件。我将使用数组ex:where alphabet_size = 26
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',}
使用包含此
的另一个char数组文件进行解密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] =&# 39;我'
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&#39 ;,每个'' a' z'等等。)(消息包含我在那里显示的加密文本文件) 现在,我的问题是如何使用" char代码数组"加密"消息数组"基本上不确定这是否是正确的术语,但匹配和替换?任何帮助都会很棒!提前谢谢。
答案 0 :(得分:0)
通过code
数组使用索引。
for (int num = 0; message[num] != '\0'; num++)
if(isalpha(message[num]))
message[num] = code[message[num]-'a'];
:#include <ctype.h>
函数的isalpha
。它在这里使用是因为您只想替换字母字符(并且您只使用小写字母)。
如上面的评论所示,您的错误在于您因为未使用else if
而多次替换某些字符。
最后,这是您解密的明文:
加密是将算法应用于消息的过程所给出的名称,该消息对其中的数据进行加扰 - 这使得如果不是实际上不可能推断仅给出编码数据的原始数据是非常困难和耗时的。算法的输入通常涉及称为密钥的附加秘密数据,这可防止消息被解码 - 即使该算法是公知的