陷入Vigenere加密程序的最后部分

时间:2016-07-12 14:26:01

标签: c cs50 vigenere

我正在参加Edx的在线课程cs50,我有一项任务,我必须创建一个程序,用户输入一个关键字(用于加密)和一个需要在{{3}加密的字符串密码。

Vigenere通过加密关键字后面的文本来工作:例如,如果我的字符串是" Hello"我的关键字是" abc" :a按字母字符等于0,b为1,c为2;所以字符串中的字母h被加密而没有切换字符(关键字中的字母a = 0),字母e被切换一个位置并加密到{{ 1}},等等。如果关键字的长度小于字符串的长度(如本例所示),则加密必须再次使用关键字的第一个字符,这是我的问题。

事实上,我认为我已经很好地实现了整个程序,但我不确定如果关键字的字符数少于输入的字符串,我不知道如何考虑。 程序现在只返回我的字符串加密的第一个字符,第一个字符未加密,然后停止 我不要求提供完整的解决方案,但我只是想了解如何解决我的程序问题。

这是我的计划:

f

1 个答案:

答案 0 :(得分:0)

  

...如果关键字的字符数少于输入的字符数,则不确定如何考虑。

keyword[j]之后访问keyword[]是不好的。 (未定义的行为)。当密钥短于消息的alpha部分时,OP的代码会发生这种情况。

根据需要,只需重复使用keyword[]字符串即可。提示:重置j

鼠标悬停接听。

  

int j_length = strlen(keyword);
       ...
       J ++;
       if(j> = j_length)j = 0;