码迷,mamicode.com
首页 > 其他好文 > 详细

iscc2016-basic-find-to-me

时间:2016-05-30 21:29:46      阅读:162      评论:0      收藏:0      [点我收藏+]

标签:

额 第一题就暴力搜索了

 

已知仿射加密变换为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

标签:

原文地址:http://www.cnblogs.com/ailx10/p/5543773.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!