分页: 1 / 1

仿射加密法

帖子发表于 : 2015-05-12 11:25
Caesar
仿射加密法是一种字符替换的加密方法。每个字符通过仿射函数替换为另一个字符。
如果字符空间是26,也就是只对26个英文字符进行加密,密文字符是:
y=ax+b(mod 26)
其中,a,b属于集合{0, 1, 2, 3... 25},而且a和26互质,这样才能保证x和y一一对应。

讨论代码在第40行(文件AffineCipher.h中)

帖子发表于 : 2015-05-12 11:38
Caesar
加密的密钥,实际上就是a*96 b
GTalkabout 写道:Click to open by GTalkabout: 69ddc6b0-f858-11e4-a910-1aee658114e8
图片

讨论代码在第44行(文件AffineCipher.h中)

帖子发表于 : 2015-05-12 11:39
Caesar
传统的用途是加密英文信件,字符空间26就足够了,但是用在计算机字符中就不够了,还有数字,符号,字符还有大小写……
这里的96表示的集合{0, 1, 2, 3...95}
GTalkabout 写道:Click to open by GTalkabout: 846660f0-f858-11e4-92ea-1aee658114e8
图片

讨论代码在第50行(文件AffineCipher.h中)

帖子发表于 : 2015-05-12 11:48
Caesar
原文字符串要求是ascii字符32到127,转换到0到95的值,也就是加密公式里的x
GTalkabout 写道:Click to open by GTalkabout: cb16bbc0-f859-11e4-a2eb-1aee658114e8
图片

讨论代码在第50行(文件AffineCipher.h中)

帖子发表于 : 2015-05-12 11:50
Caesar
加密公式里的a
GTalkabout 写道:Click to open by GTalkabout: f9ca73d1-f859-11e4-9e51-1aee658114e8
图片

讨论代码在第50行(文件AffineCipher.h中)

帖子发表于 : 2015-05-12 11:50
Caesar
加密公式里的b
GTalkabout 写道:Click to open by GTalkabout: 07a4e66e-f85a-11e4-a7ba-1aee658114e8
图片

讨论代码在第46行(文件AffineCipher.h中)

帖子发表于 : 2015-05-12 11:53
Caesar
保证a和96互质,因为这里字符空间是96而不是26
GTalkabout 写道:Click to open by GTalkabout: 6c179f30-f85a-11e4-8829-1aee658114e8
图片

讨论代码在第50行(文件AffineCipher.h中)

帖子发表于 : 2015-05-12 11:53
Caesar
加密后是0到95的值,加上32,就是ascii字符32到127,这样一个由ascii字符32到127组成的字符串就加密为另一个也是由ascii字符32到127组成的字符串了
GTalkabout 写道:Click to open by GTalkabout: 7db2c34f-f85a-11e4-917f-1aee658114e8
图片