仿射密码加密算法

本文介绍了仿射密码的加密和解密原理,它结合了加法和乘法密码,要求gcd(k1, n)=1以确保可逆性。当k1=1时转换为加法密码,k2=0时转换为乘法密码。文章通过C#代码展示了如何使用仿射密码进行加密,包括获取用户输入的加密系数k1和参数k2,以及将明文转换为密文的过程。" 7628135,266643,使用VBA自动添加C++源文件头注释的宏,"['VBA', 'C++', '文档', '编程工具']
摘要由CSDN通过智能技术生成

  算法简述:

   加法密码和乘法密码结合就构成仿射密码,仿射密码的加密和解密算法是:

    C= Ek(m)=(k1m+k2) mod n
    M= Dk(c)=k3(c- k2) mod n(其中(k3 ×k1)mod26 = 1)
   
    仿射密码具有可逆性的条件是gcd(k1, n)=1。当k1=1时,仿射密码变为加法密码,当k2=0时,仿射密码变为乘法密码。

    仿射密码中的密钥空间的大小为nφ(n),当n为26字母,φ(n)=12,因此仿射密码的密钥空间为12×26 = 312。

 

  主要代码如下:

            int i,j,l,m,b;
            char[] str1 = new char[80];
            Console.WriteLine("请输入需要加密的明文:");
            string str = Console.ReadLine();
            int[] k1 = { 0, 3, 5, 7, 9, 11, 15, 17, 19, 21, 23, 25 };
            char[] t1 = { 'a','b','c','d','e','f','g','h','i','j','k','l','

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值