iscc2016-basic-find-to-me
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了iscc2016-basic-find-to-me相关的知识,希望对你有一定的参考价值。
额 第一题就暴力搜索了
已知仿射加密变换为c=(11m+8)mod26,试对密文sjoyuxzr解密
#include <stdio.h> int main(void) { int m,c; while(scanf("%c",&m)) { c = (11 * (m -97)+ 8)%26; printf("%c",c+97); } return 0; }
看了大神的代码 有所醒悟
c= Ek(m)=(k1m+k2) mod n { c-k2 = k1 *m mod n 令k3*k1 mod n =1 得(c - k2) * k3 = m mod n m = (c - k2) * k3 } m=Dk(c)=k3(c- k2) mod n(其中(k3 ×k1)mod26 = 1)
def extendedGCD1(a, b): # a*xi + b*yi = ri if b == 0: return (1, 0, a) (x, y, r) = extendedGCD1(b, a%b) """ gcd(a, b) = a*xi + b*yi gcd(b, a % b) = b*xi+1 + (a - [a/b]*b)*yi+1 gcd(a, b) = gcd(b, a % b) => a*xi + b*yi = a*yi+1 + b*(xi+1 - [a/b]*yi+1) xi = yi+1 yi = xi+1 - [a/b]*yi+1 """ tmp = x x = y y = tmp - (a/b) * y return (x, y, r)
以上是关于iscc2016-basic-find-to-me的主要内容,如果未能解决你的问题,请参考以下文章