nyoj 移位密码】的更多相关文章

移位密码 时间限制:1000 ms  |  内存限制:65535 KB 难度:0   描述 移位密码是最简单的一类代替密码,具体算法就是将字母表的字母右移k个位置(k<26),并对字母表长度作模运算. 现给你一串密文,全部由大写字母组成.已知加密过程为:将每个字母按照字母表的顺序右移k位. 加密函数:E(m)=(m+k)%q. 请破译出明文!   输入 输入包含多组测试数据(少于1000组).每组数据包含一个字符串和一个整数k(k<26),中间用空格隔开,字符串全部由大写字母组成,长度小于50…
仿射密码 时间限制:1000 ms | 内存限制:65535 KB 难度:1 描述 仿射密码是替换密码的另一个特例,可以看做是移位密码和乘数密码的结合.其加密变换如下: E(m)=(k1*m+k2) mod q;(其中k1,k2为密钥,且0…
仿射密码 时间限制:1000 ms  |  内存限制:65535 KB 难度:1 ->   Link   <- 和乘数密码差不多: 加密算法:Ek(m)=(k1*m+k2)%q;gcd(k1,q)=1; 解密算法:Dk(c)=k1^-1(c-k2)%q;k1^-1为k1在模q下的乘法逆元: 注意:k1为1时,相当于移位密码,当k2为0时相当于乘数密码:k1,k2同时为(1,0)时无效: 关键也在求逆元,在这里完全可以暴力解了: #include<bits/stdc++.h> usi…
移位密码 时间限制:1000 ms  |  内存限制:65535 KB 难度:0 ->   Link   <- 还有1个半小时考信息安全导论,昨晚心血来潮在oj上看到这几个题,简直就是水啊,完全可以暴力,我想出题人能不能专业一点用逆元解,这样还更有利: 当然这个题不用逆元,最简单的代替密码了,好像书上提过的最早出现的凯撒密码(公元前一世纪,古罗马皇帝) 加密公式:Ek(m)=(m+k)%q; 解密公式:Dk(c)=  (c-k)%q; 说白了就是明文左移多少位,密文再右移回来就是了: #inc…
移位密码 加密C=Ek(m)=m+k mod 26 解密m=Dk(m)=c-k mod 26 密钥空间|k|=26=|c|=|m| #include<iostream> #include<cstdio> #include<cstdlib> #include<map> #include<string> using namespace std; map<char,int>letter; void init() { ;i<=;i++)…
aaarticlea/png;base64,iVBORw0KGgoAAAANSUhEUgAAAtIAAAJqCAIAAACJkTDlAAAgAElEQVR4nO3du3Ljvpa34b4J574Qx7…
乘数密码 时间限制:1000 ms  |  内存限制:65535 KB 难度:1 ->    Link    <- 简单代替密码的第二种,比移位密码稍微复杂点,不过鉴于NYOJ,是完全可以暴力的,这里主要是介绍一种逆元解法: 加密公式:Ek(m)=k*m%q,gcd(k,q)=1; 解密算法:Dk(c)=cK^-1%q,K^-1为k在模q下的乘法逆元. 那么怎么算这个逆元的,可以用扩展欧几里德算法:但注意K^-1*k%q=1;所以也可以暴力解: #include<bits/stdc++.…
0x00.综合 网站中包含大多编码的解码. http://web2hack.org/xssee/ https://www.sojson.com/ http://web.chacuo.net/ 0x01.文字倒序排列 http://www.qqxiuzi.cn/zh/daoxu/ 0x02.cmd5解密 http://www.cmd5.com/ http://pmd5.com/ http://tool.chinaz.com/Tools/MD5.aspx http://md5jiami.51240.…
题目描述: 下面我们来介绍风靡全球的凯撒密码Caesar cipher,又叫移位密码.移位密码也就是密码中的字母会按照指定的数量来做移位.一个常见的案例就是ROT13密码,字母会移位13个位置.由'A' ↔ 'N', 'B' ↔ 'O',以此类推.写一个ROT13函数,实现输入加密字符串,输出解密字符串.所有的字母都是大写,不要转化任何非字母形式的字符(例如:空格,标点符号),遇到这些特殊字符,跳过它们. 基本思路不难,难点在如何跳过特殊符号,比如空格逗号之类的,只有专门查询ascii码去跳过他…
算法分析 仿射密码结合了移位密码和乘数密码的特点,是移位密码和乘数密码的组合. 仿射密码的加密算法就是一个线性变化,即对明文字符x,对应的密文字符为y=ax+b(mod26)其中,a, b属于Z26且gcd(a,b)=1 实现过程: 选取a,b两个参数,其中gcd(a, 26)=1 加密变换: c= a∗…