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的主要内容,如果未能解决你的问题,请参考以下文章

2021-05 ISCC竞赛

2021-05 ISCC竞赛

2021-05 ISCC竞赛

wp2021ISCC

ISCC2016之旅

ISCC 2020 Writeup