仿射加密法

经典密码学的各种加密解密算法,所有算法至少用C++和php两种语言实现

仿射加密法

帖子Caesar » 2015-05-12 11:25

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

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

帖子Caesar » 2015-05-12 11:38

加密的密钥,实际上就是a*96 b
GTalkabout 写道:Click to open by GTalkabout: 69ddc6b0-f858-11e4-a910-1aee658114e8
图片
头像
Caesar
 
帖子: 8
注册: 2015-05-12 10:43

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

帖子Caesar » 2015-05-12 11:39

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

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

帖子Caesar » 2015-05-12 11:48

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

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

帖子Caesar » 2015-05-12 11:50

加密公式里的a
GTalkabout 写道:Click to open by GTalkabout: f9ca73d1-f859-11e4-9e51-1aee658114e8
图片
头像
Caesar
 
帖子: 8
注册: 2015-05-12 10:43

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

帖子Caesar » 2015-05-12 11:50

加密公式里的b
GTalkabout 写道:Click to open by GTalkabout: 07a4e66e-f85a-11e4-a7ba-1aee658114e8
图片
头像
Caesar
 
帖子: 8
注册: 2015-05-12 10:43

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

帖子Caesar » 2015-05-12 11:53

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

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

帖子Caesar » 2015-05-12 11:53

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


回到 Caesar 的项目

在线用户

正在浏览此版面的用户:没有注册用户 和 3 位游客