头歌 经典密码体制(上)

个人关于头歌上相关案例的一些简单记录

移位密码

移位密码体制

通俗的来讲,移位密码体制就是通过一个线性变换,即一次方程,是使得在该变换下,明文和密文是一一对应的。下面给出具体的移位的密码体制。 令P=C=K=Z26​(这里的P表示明文空间,C代表密文空间,K代表密文空间)。对0<=K<=25,任意x,y属于Z26​,定义:

  • ek​(x)=(x+K)mod26,这个是加密式子,具体是对每一位明文字符x进行右移K位得到密文。

  • dk​(x)=(y−K)mod26,这个是解密式子,具体是对每一位密文字符y进行左移K位得到明文。

另外当K=3的时候,此密码体制叫做凯撒密码。

单看定义是不是很糊涂, 不要管, 记住这是凯撒密码就可以了。举例来说,如果密钥是3,则明文中的每个字母都向后移动3个位置,即A变成D,B变成E,以此类推。

代码

#include<bits/stdc++.h>
using namespace std;
char S[100];

//在下面Begin和End之间补全代码,对输入的字符串进行K位移动加密
int main()
{
    int K;
    scanf("%d",&K);
    cin>>S;
    
	/*********** Begin ***********/
	
    

    /*********** End ***********/
}

对于这个题干,K是秘钥,S是明文。
就是把S中的每个字母依次向后移动K位即可, 得解:

#include<bits/stdc++.h>
using namespace std;
char S[100];

//在下面Begin和End之间补全代码,对输入的字符串进行K位移动加密
int main()
{
    int K;
    scanf("%d",&K);
    cin>>S;
    
	/*********** Begin ***********/
	
    for (int i = 0; S[i] != '\0'; i++) {
        if (isalpha(S[i])) {
            char base = islower(S[i]) ? 'a' : 'A';
            S[i] = ((S[i] - base + K) % 26) + base;
        }
    }
    cout<<S<<endl;

    /*********** End ***********/
}

代换密码

代换密码体制

代换密码就是明文中每一个字符被替换成密文中的另外一个字符,代换后的各字母保持原来的位置。对密文进行逆替换就可以恢复出明文。

下面给出代换密码的具体定义。 令P=C=Z26​K26个数字0,1,...,25的所有可能代换组成。对任意的代换π属于K,定义: 加密函数: eπ​(x)=π(x) 解密函数: dπ​(y)=π−1(y) 这里的π−1代表置换π的逆代换。 在代换密码的情形下,可简单的将加密和解密过程直接看做是一个字母表上的置换。

同样,看定义乱七八糟的,核心就是替换。

测试说明

看测试说明就很好理解了


测试输入:

    mbgyalzvepsfonxqgduritwkch
    vgiyzmpxgbscutkrnhoafdqwel
    ggxrpnrvystmwcysyycqpevikeffmznimkkasvwsrenzkycx

预期输出:

    nnkabtaxysdvqeysyyerbgxfwgccvptfvwwzsxqsagtpwyek

输入的明文 x被替换为k,r替换为a,可以看到就是输入第一行的字母按照顺序被替换为第二行的字母

至于为什么初始的g被替换成了n而不是i
可以理解为发生了二次替换
在定义代换时, g一开始是被替换未i, 但在A字符串继续索引时, 会出现第二个g的替换
此时第二个g的替换会覆盖第一个g的替换, 导致最终的明文加密时是 g -> n 而不是 g -> i

理解了这一点代码就很容易了

C++支持直接用词典MAP的方式进行转换

代码

#include<bits/stdc++.h>
using namespace std;
char A[27],B[27],M[100];
map<char,char>MAP;

//在下面Begin和End之间补全代码,对输入的字符串进行代换表置换
int main()
{
    cin>>A;
    cin>>B;
    cin>>M;
 /*********** Begin ***********/
	for(int i=0;i<26;i++){
        MAP[A[i]]=B[i];
    }
    
    for(int i=0;M[i]!='\0';i++){
        if(MAP.find(M[i])!=MAP.end()){
            M[i]=MAP[M[i]];
        }
    }
    
    cout<<M<<endl;
 /*********** End ***********/
}

仿射密码

仿射密码为单表加密的一种,字母系统中所有字母都利用一个简单数学方程加密,对应至数值或转回字母。

仿射密码体制

P=C=Z26​K=(a,b)∈Z26​×Z26​:gcd(a,26)=1,对任意的K=(a,b)∈K,x,y∈Z26​,定义加密变换为: ek​(x)=(ax+b)(mod 26)

相应的解密变换为: dk​(y)=a−1(y−b)(mod 26) 下面给出一个例子: 设密钥K=(7,3),由前所得,有7−1(mod 26)=15。加密函数为ek​=7x+3(mod 26),因为7×15≡1(mod 26),相应的解密变换为: dk​(y)=15(y−3)(mod 26)=15y−45(mod 26) 上面的运算均是在Z26​上完成的。下面来验证对于任意的x∈Z26​,都有dk​(ek​(x))=x,下面是验证过程: dk​(ek​(x))=dk​(7x+3) =15(7x+3)−45 =x+45−45 =x 验证完毕。

直接看定义还是非常复杂, 关键是解密的变换甚至是写错的, 应该是下面这两个:
F​(x)=(ax+b)(mod 26) 加密
D(y) = a^-1 * (y - b) mod 解密

这里的 a^-1不是幂指数, 而是表示逆元
如果存在整数x使得 (a * x) mod m = 1,那么x就是a在模数m下的逆元

测试说明
测试输入:

    2 3
    qwercvzzxx

预期输出:

    asqqkcooii

测试输入:

    5 10
    qwercvzzxx

预期输出:

    gmuhslppnn

输入的两个字符就是 a和b , 对应输入字符串的每个字符就是密文y
因为只要解密, 所以看F​(y)=a^-1(y−b)](mod 26) 即可

代码

#include<bits/stdc++.h>
using namespace std;
char A[103];
constexpr int mod=26;

//在下面Begin和End之间补全代码,对输入的字符串进行仿射密码解密
/*********** Begin ***********/
size_t quick(size_t x,size_t y)
{
    size_t ans=x;
    while(y)
    {
        if(y&1)
            ans=ans*x%mod;
        x=x*x%mod;
        y>>=1;
    }
    return ans;
}
int main()
{
    int a,b;
    cin>>a>>b;
    cin>>A;
    int x=quick(a,15);
    for(int i=0; i<strlen(A); i++)
        printf("%c",'a'+(x*((A[i]-'a'-b+mod)%mod)%mod));
    return  0;
}
/*********** End ***********/

维吉尼亚密码

维吉尼亚密码的密码体制

维吉尼亚密码(又译维热纳尔密码)是使用一系列凯撒密码组成密码字母表的加密算法,属于多表密码的一种简单形式。下面给出具体定义。 设m是一个正整数,定义P=C=K=(Z26​)m(这里之所以会多出一个m次方,就是因为维吉尼亚密码是一个多表代换,即对于相同的明文可以对应不同的密文)。对任意的密钥K=(k1​,k2​,...,km​),定义: ek​(x1​,x2​,...,xm​)=(x1​+k1​,x2​+k2​,...,xm​+km​) 这个是加密函数。 dk​(y1​,y2​,...,ym​)=(y1​−k1​,y2​−k2​,...,ym​−km​) 这个是解密函数。 以上所有的运算都是在Z26​上进行。

看之后的例子

假设m=6,密钥字为“CIPHER”,其对应于如下的数字串K=(2,8,15,7,4,17)。要加密的明文为thiscryptos。 那么我们可以把明文转化为对应的数字,使用密钥字进行模26的运算。
那么相应的密文为:vpxzgiaxivw

代码

#include<bits/stdc++.h>
using namespace std;
char A[103],B[103];
//在下面Begin和End之间补全代码,对输入的字符串进行维吉尼亚加密
int main()
{
    cin>>A;
    cin>>B;
    /*********** Begin ***********/
     // 将密钥串和明文串都转换为小写字母
    for(int i=0; A[i]!='\0'; i++){
        A[i] = tolower(A[i]);
    }
    for(int i=0; B[i]!='\0'; i++){
        B[i] = tolower(B[i]);
    }
    
    int keyLen = strlen(A);
    int textLen = strlen(B);
    
    string encryptedText = "";
    
    for(int i=0; i<textLen; i++){
        char keyChar = A[i % keyLen]; // 循环使用密钥中的字符
        char plainChar = B[i];
        
        // 对明文字符进行移位加密
        char encryptedChar = 'a' + (plainChar - 'a' + keyChar - 'a') % 26;
        
        // 将加密后的字符加入到加密串中
        encryptedText += encryptedChar;
    }
    
    // 输出密文串
    cout << encryptedText;

    /*********** End ***********/
}

  • 17
    点赞
  • 25
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
基于jsp码头船只出行及配套货柜码放管理系统软件程序源码+数据库+WORD毕业设计论文文档. jsp码头船只出行及配套货柜码放管理系统主要用于实现高校在线考试,基本功能包括:用户登录、修改个人信息、查看码头信息;系统管理人员管理;船只信息管理;船只路线信息管理;货柜信息管理等。本系统结构如下: (1)用户登录模块: 该模块分为三中用户的登录: 1、一般(查看)用户,权限只有修改个人信息和查看功能 2、(操作)用户登录,可以修改自己的信息,还可以对系统内容进行增加、删除和修改 3、系统管理员,可以修改自己的信息,并且不仅有查看、增删改的基本权限,还有对用户的管理和注册权限 (2)用户管理模块: 该模块实现对用户的增加,删除和修改 (3)个人信息维护模块: 该模块实现用户对自己的名字和密码等个人信息的修改 (4)新闻公告管理模块: 该模块实现新闻公告的增加,删除和修改 (5)船只管理模块: 该模块实现船只的增加,删除和修改 (6)路线管理模块: 该模块实现路线的增加,删除和修改,以及船只与路线关系的管理 目录 1 引言 1 1.1 课题研究的背景和意义 1 1.2 国内外现状 1 1.2.1 国外主要现状 1 1.2.2 国内主要现状 2 1.3 课题研究的目的及主要内容 3 1.3.1 课题研究的目的 3 1.3.2 课题研究的主要内容 3 1.4 可行性分析 3 1.4.1 技术可行性研究 3 1.4.2 经济可行性研究 4 1.4.3 操作可行性研究 4 1.5 论文内容安排 4 2 系统开发技术及环境 5 2.1 JAVA语言 5 2.2 开发工具MY ECLIPSE 5 2.3 MY SQL数据库 6 2.4 JSP技术 6 2.5 SERVLET 7 2.6 系统开发环境 8 3 系统需求分析 8 3.1 系统功能需求 8 3.2 系统性能需求 9 3.3 系统运行需求 10 3.4 系统的用例分析 10 4 系统的设计与实现 12 4.1 总体设计 12 4.1.1 软件结构设计 12 4.1.2 数据库设计 12 4.2 详细设计 14 4.2.1 首页实现 15 4.2.2 用户登录的实现 16 4.2.3 用户管理的实现 19 4.2.4 个人信息维护的实现 20 4.2.5 船只管理的实现 21 4.2.6 货柜管理的实现 23 4.2.7 路线管理的实现 25 4.2.8 船只分配路线的实现 27 4.2.9 船只分配货柜的实现 29 5 系统测试 32 结论 34 参考文献 35 致谢 36 1 引言 1.1 课题研究的背景和意义 21世纪是一个全新的具有挑战性的世纪,全世界的码头都将面对全新的问题,面临新的挑战。全球化大潮的涌动,催促着一种新的国际体制的加速形成。国际贸易港口码头之间的合作与竞争将更加频繁和激烈。以信息技术为代表的新技术革命迅猛发展,高集成度、智能化、光纤化、数字化、综合化、网络化,为船运和码头业提供了更为广阔的发展空间;国际经济结构的调整,经济全球化的加速,必将促进港口间国际贸易的发展与运量的增长[1]。 随着计算机管理技术的高速发展,各个领域都应用计算机对相关信息进行管理。本系统是一个复杂而且涉及内容众多的系统,码头船只出行及配套货柜码放管理系统是码头管理系统中一个比较重要的部分。为了码头管理工作节省不必要的人力、物力和资源,迫切需要较好的码头船只出行及配套货柜码放管理系统软件来提高工作效率和信息的准确率,以降低经济成本。利用计算机、网络、计算机应用软件等现代科技和手段,加强和改进码头管理工作,可以降低管理工作的成本,减轻工作强度,提高工作效率。科技的发展就是要为生产服务,有了码头船只出行及配套货柜码放管理系统一定会为码头工作带来便捷。 1.2 国内外现状 1.2.1 国外主要现状 (1)世界港口码头发展的重心正在加快向中国转移,二战过后,世界港口码头发展日新月异。随着世界经济的变化更迭,传统的大港地位发生变动,新的优势港口码头不断涌现。 20世纪90年代以来,世界港口码头业最大的变化莫过于其发展重心已经向亚洲,特别是中国转移,而且转移的速度正在加快。全世界有许多著名的海港码头。据有资料记载,目前全世界有亿吨港20个;最大的是新加坡港,2000年货物吞吐量达3.3亿吨;货物吞吐量居前20位的港口中,中国占9个(上海、宁波、广州、天津、青岛、秦皇岛、大连和香港、高雄),美国占4个,日本占3个,欧洲占2个,韩国占2个。按集装箱吞吐量,最大的港口是香港,2002年吞吐量达1900万标准箱;排名居前10位的港口中,中国占4个(香港、上海、高雄、
网络安全试题 一.单项选择题(每题1分,共60分) 1. 在以下人为的恶意攻击行为中,属于主动攻击的是( ) A、数据篡改及破坏 B、数据窃听 C、数据流分析 D、非法访问 2. 数据完整性指的是( ) A、保护网络中各系统之间交换的数据,防止因数据被截获而造成泄密 B、提供连接实体身份的鉴别 C、防止非法实体对用户的主动攻击,保证数据接受方收到的信息与发送方发送的信 息 完全一致 D、确保数据数据是由合法实体发出的 3. 以下算法中属于非对称算法的是( ) A、DES B RSA算法 C、IDEA D、三重DES 4. 在混合加密方式下,真正用来加解密通信过程中所传输数据(明文)的密钥是( ) A、非对称算法的公钥 B、对称算法的密钥 C、非对称算法的私钥 D、CA中心的公钥 5. "DES是一种数据分组的加密算法, DES它将数据分成长度为多少位的数据块,其中一部分用作奇偶校验,剩余部分作为密 码的长度?" ( ) A 56位 B 64位 C 112位 D 128位 10.黑客利用IP地址进行攻击的方法有:( ) A. IP欺骗 B. 解密 C. 窃取口令 D. 发送病毒 11. 防止用户被冒名所欺骗的方法是: ( ) A. 对信息源发方进行身份验证 B. 进行数据加密 C. 对访问网络的流量进行过滤和保护 D. 采用防火墙 A. 安全通道协议 23.以下关于计算机病毒的特征说法正确的是:( ) A. 计算机病毒只具有破坏性,没有其他特征 B. 计算机病毒具有破坏性,不具有传染性 C. 破坏性和传染性是计算机病毒的两大主要特征 D. 计算机病毒只具有传染性,不具有破坏性 29.加密技术不能实现:( ) A. 数据信息的完整性 B. 基于密码技术的身份认证 C. 机密文件加密 D. 基于IP头信息的包过滤 30.所谓加密是指将一个信息经过( )及加密函数转换,变成无意义的密文,而接受方则将此密文经过解密函数、( )还原成明文。 A. 加密钥匙、解密钥匙 B. 解密钥匙、解密钥匙 C. 加密钥匙、加密钥匙 D. 解密钥匙、加密钥匙 31.以下关于对称密钥加密说法正确的是:( ) A. 加密方和解密方可以使用不同的算法 B. 加密密钥和解密密钥可以是不同的 C. 加密密钥和解密密钥必须是相同的 D. 密钥的管理非常简单 32.以下关于非对称密钥加密说法正确的是:( ) A. 加密方和解密方使用的是不同的算法 B. 加密密钥和解密密钥是不同的 C. 加密密钥和解密密钥匙相同的 D. 加密密钥和解密密钥没有任何关系 33.以下关于混合加密方式说法正确的是:( ) A. 采用公开密钥体制进行通信过程中的加解密处理 B. 采用公开密钥体制对对称密钥体制的密钥进行加密后的通信 C. 采用对称密钥体制对对称密钥体制的密钥进行加密后的通信 D. 采用混合加密方式,利用了对称密钥体制的密钥容易管理和非对称密钥体制的加解 密处理速度快的双重优点 34.以下关于数字签名说法正确的是:( ) A. 数字签名是在所传输的数据后附加上一段和传输数据毫无关系的数字信息 B. 数字签名能够解决数据的加密传输,即安全传输问题 C. 数字签名一般采用对称加密机制 D. 数字签名能够解决篡改、伪造等安全性问题 二.多项选择题(每题2分,共30分,答错无分,答不全得1分) 1.人为的恶意攻击分为被动攻击和主动攻击,在以下的攻击类型中属于主动攻击的是: ( ) A. 数据窃听 B. 数据篡改及破坏 C. 身份假冒 D. 数据流分析 5. 在加密过程中,必须用到的三个主要元素是( ) A. 所传输的信息(明文) B. 加密钥匙(Encryption key) C. 加密函数 D. 传输信道 6. 加密的强度主要取决于( ) A. 算法的强度 B. 密钥的保密性 C. 明文的长度 D. 密钥的强度 7. 以下对于对称密钥加密说法正确的是( ) A. 对称加密算法的密钥易于管理 B. 加解密双方使用同样的密钥 C. DES算法属于对称加密算法 D. 相对于非对称加密算法,加解密处理速度比较快 8. 相对于对称加密算法,非对称密钥加密算法( ) A. 加密数据的速率较低 B. 更适合于现有网络中对所传输数据(明文)的加解密处理 C. 安全性更好 D. 加密和解密的密钥不同 9. 以下对于混合加密方式说法正确的是( ) A. 使用公开密钥密码体制对要传输的信息(明文)进行加解密处理 B. 使用对称加密算法队要传输的信息(明文)进行加解密处理 C. 使用公开密钥密码体制对称加密密码体制的密钥进行加密后的通信 D. 对称密钥交换的安全信道是通过公开密钥密码体制来保证的 10. 在通信过程中,只采用数字签名可以解决( )等问题。 A. 数据完整性 B. 数据的抗抵赖性 C. 数据的篡
网络安全试题 一.单项选择题(每题1分,共60分) 1. 在以下人为的恶意攻击行为中,属于主动攻击的是() 2. A、数据篡改及破坏 3. B、数据窃听 4. C、数据流分析 5. D、非法访问 6. 数据完整性指的是() 7. A、保护网络中各系统之间交换的数据,防止因数据被截获而造成泄密 8. B、提供连接实体身份的鉴别 9. C、防止非法实体对用户的主动攻击,保证数据接受方收到的信息与发送方发送的信息 完全一致 10. D、确保数据数据是由合法实体发出的 11. 以下算法中属于非对称算法的是() 12. A、DES 13. BRSA算法 14. C、IDEA 15. D、三重DES 16. 在混合加密方式下,真正用来加解密通信过程中所传输数据(明文)的密钥是() 17. A、非对称算法的公钥 18. B、对称算法的密钥 19. C、非对称算法的私钥 20. D、CA中心的公钥 21. "DES是一种数据分组的加密算法,DES它将数据分成长度为多少位的数据块,其中一部分 用作奇偶校验,剩余部分作为密码的长度?" () A56位 B 64位 C 112位 D 128位 10.黑客利用IP地址进行攻击的方法有:() A. IP欺骗 B. 解密 C. 窃取口令 D. 发送病毒 11. 防止用户被冒名所欺骗的方法是:() A. 对信息源发方进行身份验证 B. 进行数据加密 C. 对访问网络的流量进行过滤和保护 D. 采用防火墙 A. 安全通道协议 23.以下关于计算机病毒的特征说法正确的是:() A. 计算机病毒只具有破坏性,没有其他特征 B. 计算机病毒具有破坏性,不具有传染性 C. 破坏性和传染性是计算机病毒的两大主要特征 D. 计算机病毒只具有传染性,不具有破坏性 29.加密技术不能实现:() A. 数据信息的完整性 B. 基于密码技术的身份认证 C. 机密文件加密 D. 基于IP头信息的包过滤 30.所谓加密是指将一个信息经过()及加密函数转换,变成无意义的密文,而接受方 则将此密文经过解密函数、()还原成明文。 A. 加密钥匙、解密钥匙 B. 解密钥匙、解密钥匙 C. 加密钥匙、加密钥匙 D. 解密钥匙、加密钥匙 31.以下关于对称密钥加密说法正确的是:() A. 加密方和解密方可以使用不同的算法 B. 加密密钥和解密密钥可以是不同的 C. 加密密钥和解密密钥必须是相同的 D. 密钥的管理非常简单 32.以下关于非对称密钥加密说法正确的是:() A. 加密方和解密方使用的是不同的算法 B. 加密密钥和解密密钥是不同的 C. 加密密钥和解密密钥匙相同的 D. 加密密钥和解密密钥没有任何关系 33.以下关于混合加密方式说法正确的是:() A. 采用公开密钥体制进行通信过程中的加解密处理 B. 采用公开密钥体制对对称密钥体制的密钥进行加密后的通信 C. 采用对称密钥体制对对称密钥体制的密钥进行加密后的通信 D. 采用混合加密方式,利用了对称密钥体制的密钥容易管理和非对称密钥体制的加解 密处理速度快的双重优点 34.以下关于数字签名说法正确的是:() A. 数字签名是在所传输的数据后附加上一段和传输数据毫无关系的数字信息 B. 数字签名能够解决数据的加密传输,即安全传输问题 C. 数字签名一般采用对称加密机制 D. 数字签名能够解决篡改、伪造等安全性问题 二.多项选择题(每题2分,共30分,答错无分,答不全得1分) 1.人为的恶意攻击分为被动攻击和主动攻击,在以下的攻击类型中属于主动攻击的是: () A.数据窃听 B.数据篡改及破坏 C.身份假冒 D.数据流分析 5.在加密过程中,必须用到的三个主要元素是() A.所传输的信息(明文) B.加密钥匙(EncrRptionkeR) C.加密函数 D.传输信道 6.加密的强度主要取决于() A.算法的强度 B.密钥的保密性 C.明文的长度 D.密钥的强度 7.以下对于对称密钥加密说法正确的是() A.对称加密算法的密钥易于管理 B.加解密双方使用同样的密钥 C.DES算法属于对称加密算法 D.相对于非对称加密算法,加解密处理速度比较快 8.相对于对称加密算法,非对称密钥加密算法() A.加密数据的速率较低 B.更适合于现有网络中对所传输数据(明文)的加解密处理 C.安全性更好 D.加密和解密的密钥不同 9.以下对于混合加密方式说法正确的是() A.使用公开密钥密码体制对要传输的信息(明文)进行加解密处理 B.使用对称加密算法队要传输的信息(明文)进行加解密处理 C.使用公开密钥密码体制对称加密密码体制的密钥进行加密后的通信 D.对称密钥交换的安全信道是通过公开密钥密码体制来保证的 10.在通信过程中,只采用数字签名可以解决()等问题。 A.数据完整性 B.数据的抗抵赖性 C.数据的篡

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值