ACM详解(8)——加密

同态加密的原理详解与go实践 学习资料来源: https://zhuanlan.zhihu.com/p/110210315 知乎刘巍然:https://www.zhihu.com/question/27645858/answer/37598506 https://blog.youkuaiyun.com/Gouph/article/details/106179325 一、基本概念 1.1 同态加密 什么是同态加密? 提出第一个构造出全同态加密(Fully Homomorphic Encryption)[Gen09]的Craig Gentry给出的. 阅读详情

 

比赛的时候告诉你简单的加密算法,让你完成加密或者解密操作,下面通过几个简单例子介绍。
1、Message Decowding
Description
The cows are thrilled because they've just learned about encrypting messages. They think they will be able to use secret messages to plot meetings with cows on other farms.
Cows are not known for their intelligence. Their encryption method is nothing like DES or BlowFish or any of those really good secret coding methods. No, they are using a simple substitution cipher.
The cows have a decryption key and a secret message. Help them decode it. The key looks like this:
        yrwhsoujgcxqbativndfezmlpk
Which means that an 'a' in the secret message really means 'y'; a 'b' in the secret message really means 'r'; a 'c' decrypts to 'w'; and so on. Blanks are not encrypted; they are simply kept in place.
Input text is in upper or lower case, both decrypt using the same decryption key, keeping the appropriate case, of course.
Input
* Line 1: 26 lower case characters representing the decryption key
* Line 2: As many as 80 characters that are the message to be decoded
Output
* Line 1: A single line that is the decoded message. It should have the same length as the second line of input.
Sample Input
eydbkmiqugjxlvtzpnwohracsf
Kifq oua zarxa suar bti yaagrj fa xtfgrj
Sample Output
Jump the fence when you seeing me coming
翻译:简单的加密算法,把字符串中的字符替换成另外的字符,只有对方知道如何替换就可以解密。题目要求根据给定的加密方法和密文,得到原始消息。
解题思路:
第一行 eydbkmiqugjxlvtzpnwohracsf 相当于密钥,含义是
a 对应 e
b 对于 y
c 对应 d
…
只要把密文序列中的相应字符替换为后面的字符即可。
Kifq oua zarxa suar bti yaagrj fa xtfgrj
把 K 替换成 J
把 i 替换成 u
把 f 替换成 m
…
( 注意大小写 )
编程的时候:可以定义数组表示密钥。然后对密文进行遍历得到原始信息。不再给出参考代码。
2、Ancient Cipher
Description
Ancient Roman empire had a strong government system with various departments, including a secret service department. Important documents were sent between provinces and the capital in encrypted form to prevent eavesdropping. The most popular ciphers in those times were so called substitution cipher and permutation cipher.
Substitution cipher changes all occurrences of each letter to some other letter. Substitutes for all letters must be different. For some letters substitute letter may coincide with the original letter. For example, applying substitution cipher that changes all letters from 'A' to 'Y' to the next ones in the alphabet, and changes 'Z' to 'A', to the message "VICTORIOUS" one gets the message "WJDUPSJPVT".
Permutation cipher applies some permutation to the letters of the message. For example, applying the permutation <2, 1, 5, 4, 3, 7, 6, 10, 9, 8> to the message "VICTORIOUS" one gets the message "IVOTCIRSUO".
It was quickly noticed that being applied separately, both substitution cipher and permutation cipher were rather weak. But when being combined, they were strong enough for those times. Thus, the most important messages were first encrypted using substitution cipher, and then the result was encrypted using permutation cipher. Encrypting the message "VICTORIOUS" with the combination of the ciphers described above one gets the message "JWPUDJSTVP".
Archeologists have recently found the message engraved on a stone plate. At the first glance it seemed completely meaningless, so it was suggested that the message was encrypted with some substitution and permutation ciphers. They have conjectured the possible text of the original message that was encrypted, and now they want to check their conjecture. They need a computer program to do it, so you have to write one.
Input
Input contains two lines. The first line contains the message engraved on the plate. Before encrypting, all spaces and punctuation marks were removed, so the encrypted message contains only capital letters of the English alphabet. The second line contains the original message that is conjectured to be encrypted in the message on the first line. It also contains only capital letters of the English alphabet.
The lengths of both lines of the input are equal and do not exceed 100.
Output
Output "YES" if the message on the first line of the input file could be the result of encrypting the message on the second line, or "NO" in the other case.
 
Sample Input
JWPUDJSTVP
VICTORIOUS
 
Sample Output
YES
翻译:古罗马帝国有两种简单的加密算法,第一种按照顺序替换,例如把 a-y 分别替换成 b-z ,把 z 替换成 a ,这样可以把 VICTORIOUS 替换成 WJDUPSJPVT 。
第二种是打乱顺序消息的顺序,例如 <2, 1, 5, 4, 3, 7, 6, 10, 9, 8> 的含义就是把第二个字符放在第一位,而把第一位的字符放到第二位,然后是第 5 个字符,第 4 个字符, … ,可以把 VICTORIOUS 替换成 IVOTCIRSUO 。
后来发现同时使用两种算法,加密效果更好。可以把 VICTORIOUS 替换成 JWPUDJSTVP 。
题目要求:能不能把第二行中的原文转换为第一行的密文。
解题思路:首先要找出规律,第二种算法只会改变每个字符的位置,但是不会影响每个字符在字符串中出现的次数。例如 A 在原来的字符串中出现 3 次,那么通过第二种算法它出现的次数还是 3 次。第一种算法虽然改变了字符串的内容,但是有些东西没有变化,例如原来字符串中的 a 、 b 、 c 出现的次数分别 n1 、 n2 、 n3 ,假设 abc 替换 def ,则 d 、 e 、 f 出现的次数应该是 n1 、 n2 、 n3 。所以只要保证相对位置上的字符出现的次数相同即可实现转换。
 
算法:
统计输入信息第一行中每个字符出现的次数。使用长度为 26 的数组表示,分别表示字母 A 到字母 Z 出现的次数,使用 int[] a 表示。
统计输入信息第二行中的每个字符出现的次数。使用长度为 26 的数组表示,分别表示字母 A 到字母 Z 出现的次数,使用 int[] b 表示。
循环 26 次:
第 j 次循环中,再循环比较 a[(i+j)%26] 与 b[i] 是否相同,如果都相同则说明能够转换,输出 YES 即可,退出外层循环,否则继续循环。

如果26次循环完之后,没有得到结果,输出NO。

延伸阅读:

李绪成 优快云 Blog:http://blog.youkuaiyun.com/javaeeteacher
优快云学生大本营:
http://student.youkuaiyun.com/space.php?uid=124362
如果喜欢我的文章,就加我为好友:
http://student.youkuaiyun.com/invite.php?u=124362&c=7be8ba2b6f3b6cc5

ACM编程竞赛代码实践详解 国际大学生程序设计竞赛(ACM-ICPC)是一项由国际计算机学会(ACM)主办的全球性算法竞赛。这一章将简要介绍ACM-ICPC的起源、竞赛模式和它在编程界的重要性。字符串处理技巧在编程竞赛中占有重要地位。理解和掌握基础的字符串匹配算法,如朴素匹配和KMP算法,以及字符串处理的高级技巧,如字符串哈希,对于解决复杂问题至关重要。在实际应用中,通过将这些算法与其他算法结合,可以优化问题的解决过程,提升代码的运行效率。在后续的章节中,我们将继续探讨ACM竞赛中其他重要的算法和数据结构的应用。 阅读详情

相关推荐

ACM C++代码加密工具

该程序分为加密和解密两个程序,是专门用于加密和解密代码的,可以防止ACM提交代码之后被查重,加密后的代码可以正常编译,提交到OJ上也可以正常AC

C - Message Decowding

C - Message Decowding Time Limit:1000MS     Memory Limit:65536KB     64bit IO Format:%I64d & %I64u Submit Status Description The cows are thrilled because they've just learned about

u013599426的专栏 1134

RTDETR多模态融合实战:基于注意力机制的红外与可见光目标检测优化

本文深入探讨了基于RTDETR模型的红外与可见光多模态目标检测优化方案。针对复杂光照下的检测难题,文章提出并实战演示了如何利用注意力机制(如SimAM与交叉注意力)实现RGB与IR特征的智能动态融合,从而构建更鲁棒的“全天候”检测系统,有效提升安防、自动驾驶等场景在夜间及恶劣天气下的检测精度与可靠性。

weixin_29083373的博客 189

codeup2152: 加密C++

题目描述ACM俱乐部里面有些秘密文件(英文的),我们要把它进行加密。对每一个英文句子,翻转句子中单词的顺序,但单词内字符的顺序不变。句子中单词以空格符隔开。为简单起见,标点符号和普通字母一样处理。输入输入有多组数据。每组数据一行,包含一个字符串(长度&lt;=1000),为需要加密的字符串。输出对应每组数据,输出加密后的字符串。样例输入I am a student. I love you.样例输出...

薄荷糖 343

从Level 1到Level 22:手把手带你用Burp Suite通关burp-labs靶场全关卡(附难点解析)

本文详细解析了如何使用Burp Suite通关burp-labs靶场的22个关卡,从基础爆破到复杂编码绕过,涵盖Intruder配置、响应过滤、POST请求处理、MD5爆破等关键技术。特别针对Level 16的三重编码和Level 20的中文响应处理等难点提供实战技巧,帮助渗透测试工程师提升Web安全实战能力。

weixin_28831461的博客 436

平面变压器PCB绕组设计实战:从原理到布局的工程考量

本文深入探讨了平面变压器PCB绕组设计的工程实践,从基础原理到布局优化,涵盖了电流密度、层间绝缘、绕组拓扑结构等关键参数。通过实战案例分享,解析了高频应用中的集肤效应、邻近效应等挑战,并提供了热管理和EMC优化的实用技巧,助力工程师在服务器电源、车载充电器等空间敏感场景实现高效设计。

weixin_42666036的博客 461

ACM典型试题--简单的加密算法(一)

1. 题目描述 简单的加密算法:把字符串中的字符替换成另外的字符,只有对方知道如何替换就可以 解密。要求根据给定的加密方法和密文,得到原始消息。 输入格式 第一行输入密钥,第二行输入密文。 输出格式 对输入的数据输出解密后的原始信息。 输入样例 eydbkmiqugjxlvtzpnwohracsf Kifq oua zarxa suar bti yaagrj fa xtf...

weixin_30909575的博客 715

国产安全芯片在密码算法国密体系下的性能适配策略

国密体系即国家商用密码体系,是保障信息安全的核心技术体系。自20世纪90年代末起步,国密体系经历了从无到有、从弱到强的发展历程。1999年,国家密码管理局成立,标志着国密体系的正式建立。2000年,国密SM1算法首次发布,开启了国密算法的标准化进程。此后,SM2、SM3、SM4等算法陆续推出,形成了完整的对称与非对称密码算法体系。:2010年,国密标准正式纳入国家标准体系,国密算法在金融、政务、通信等关键领域的应用得到明确规范。

qq_40552871的博客 1356

ACM典型试题--古代密码(二)

1. 题目描述 古罗马帝国有两种简单的加密算法,第一种按照顺序替换,例如把a-y 分别替换成b-z, 把z 替换成a,这样可以把VICTORIOUS 替换成WJDUPSJPVT。 第二种是打乱顺序消息的顺序,例如的含义就是把第二个字 符放在第一位,而把第一位的字符放到第二位,然后是第5 个字符,第4 个字符,…,可以 把VICTORIOUS 替换成IVOTCIRSUO。 后来发现同时使

赵侠客 2607

解密OpenVLA的ActionTokenizer:如何用256个Token控制7维机器人动作

本文深入解析了OpenVLA模型中ActionTokenizer的核心机制。该分词器通过将7维连续机器人动作空间离散化为256个Token,巧妙地解决了大语言模型输出精确控制指令的难题。文章详细阐述了其设计哲学、与Llama-2词表的集成方式,并分析了256个离散区间在精度与效率间的平衡,为机器人视觉-语言-动作控制提供了关键技术桥梁。

weixin_29209801的博客 477

智能客服系统知识库构建:长尾问题解决方案全解析

智能客服系统知识库构建:长尾问题解决方案全解析

嗨,欢迎来到我的 优快云 博客小天地!一名深耕多年的技术发烧友。在这里,我将把日常工作中积累的宝贵经验,从复杂架构设计的精妙之处,到代码优化的实战技巧,毫无保留地分享给大家。 4112

ZOJ ACM CLUB晚会

题目描述 ACM CLUB的会员越来越多了,为此,ACM CLUB想为会员们准备一个晚会,晚会节目由会员们表演。消息一出,报名要表演节目的会员很多,多达N个,但是由于场地和时间有限,只能从这N个人中选M个,请问一共有多少种选择方法? 输入格式 数据的第一行是一个正整数T,接下来有T组数据,每组数据占一行。 每组数据包含两个整数N(来报名的人数,1<=N<=...

weixin_33938733的博客 324

AI应用架构师视角:AI技术引发的全球经济格局重构,你看懂了吗?

本文将从AI应用架构师的独特视角,拆解AI技术栈(算力/算法/数据)如何通过"架构渗透"重塑产业价值链,分析中美欧等主要经济体的AI战略差异如何改写全球分工格局,并为企业与个人提供一套可落地的"AI经济适应性框架"。当OpenAI的GPT-4在代码生成、多模态理解上展现出超越人类的能力,当英伟达的H100芯片成为全球科技巨头争抢的"数字石油",当中国的AI大模型在电商、金融等场景实现规模化落地——我们正站在一场由AI技术引发的全球经济重构的临界点上。AI重构全球经济格局的过程,既是挑战,更是机遇。

小白菜的博客 1258

【ACM】C++程序设计ACM题库总结

浙江工业大学ACM部分题解析+代码

chenmeng的博客 4407

【100%通过率】华为OD机试真题 Java&Go 实现【微服务的集成测试】【2023 Q1 | 100分】

现在有n个容器服务,服务的启动可能有一定的依赖性(有些服务启动没有依赖),其次服务自身启动加载会消耗些时间。给你一个nxn 的二维矩阵 useTime,其中 useTime=10 表示服务i自身启动加载需要消耗10s,useTimeli[j]=1 表示服务i 启动依赖服务i 启动完成,useTimei[k]=0,表示服务i 启动不依赖服务 k其实 0

MISAYAONE的博客 1万+

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

从ACM到蓝桥杯:HOJ多赛制配置详解(含OI/IOI模式实战演示)

本文详细解析了如何在开源在线评测系统HOJ中配置ACM、OI、IOI三大主流编程竞赛赛制。通过实战演示,重点介绍了ACM赛制的封榜与滚榜功能、OI/IOI赛制的子任务设计与评分策略,并分享了测试数据加密、异常提交处理等高级管理技巧,帮助竞赛教练与平台管理员高效搭建专业竞赛环境。

tcp8optimizer的博客 298

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

Java sdut acm 2787 加密术

题目链接:点击打开链接 加密术 Time Limit: 1000MS Memory Limit: 65536KB Submit Statistic Problem Description 加密技术是一种常用的安全保密手段,利用加密技术可以把重要的数据变成经过加密变成乱码传送,到达目的地后再利用解密手段还原。现在我们发明了一种新的加密技术,即通过在

Annfan123的博客 811

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

Alibaba ACM SDK for Python 使用教程

Alibaba ACM SDK for Python 使用教程 项目介绍 Alibaba ACM (Application Configuration Management) SDK for Python 是一个用于管理应用程序配置的开源项目。它允许开发者通过简单的 API 调用来管理配置,支持配置的动态更新,从而提高应用程序的灵活性和可维护性。ACM SDK for Python 提供了丰富的功...

gitblog_00115的博客 350

利用ACM服务,快速申请免费的公有证书,你get到了吗?

大家好,我是是Dream呀,最近很多朋友在问Dream,你知道怎么利用ACM快速申请免费的公有整数吗?emmmm这个我确实是了解过,不过也还没有真正学习过。于是趁着这个机会,我立马学习了起来!经过一天的摸索前进,Dream终于是把这个东西从头到尾搞明白啦!

拥有百余位万粉技术博主、200余位可合作代发博主,私域技术社群规模达千人,商务合作私信 1万+

Openjudge 1.8 25:螺旋加密

25:螺旋加密 查看 描述 Chip和Dale发明了一种文本信息加密技术。他们事先秘密约定好矩阵的行数和列数。接着,将字符按如下方式编码: 1. 所有文本只包含大写字母和空格。 2. 每个字符均赋予一个数值:空格=0,A=1,B=2,……,Y=25,Z=26。 按照下图所示的方式,将每个字符对应数值的5位二进制数依次填入矩阵。最后用0将矩阵补充完整。例如,对于信

Lucky_Glass的C++之旅 2821
上一篇: ACM详解(7)——压缩与编码
下一篇: ACM详解(9)——其他
老李-大连
博客等级 码龄20年 3206粉丝 308原创
评论 7
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值