2016-11-17 66 views
0

我试图从文本文件中加密读取仿射密码。我的.txt文件包含两个键:alphabetaAlpha应该是一个奇数,因为gcd(alpha, 26)==1 并生成随机密钥。这里是我的代码:Affine cipher在C语言中获得相同的密钥

beta = rand() % 26; 

但加密不能正常工作。例如:加密的字"bahar"在加密时在"XWDWN"字中显示,但应该是"M"而不是"X"。键是alpha = 3beta = 9但我的代码选择key (1, 22) alpha=1 beta=22。不断的alpha已被选中"1"。例如(1, 17)另一个加密..等

+0

的方式'。 'putc'开发和使用很长时间,所以毫无疑问;)也更喜欢''A''而不是65来创建数字 – Garf365

+0

我不知道为什么alpha总是1,但你正在做你的加密错误。这是加密看起来如何E(x)= alpha * x + beta。你的加密看起来如下:E(x)=(x + beta)+(65 * alpha) –

+0

只需要注意一下,如果alpha是13,你将无法解密。 –

回答

1

这是putc`正常工作,但不是你想象我认为加密

putc(((toupper(p) - 'A')*alpha + beta) % 26 + 'A', cipher); 
+0

更多类似这样的'putc(((toupper(c) - beta - 65)* r)%26 + 65,解密);' –