您的位置:首页 > 其它

iscc2016-basic-find-to-me

2016-05-30 20:10 239 查看
额第一题就暴力搜索了

已知仿射加密变换为c=(11m+8)mod26,试对密文sjoyuxzr解密

#include<stdio.h> intmain(void) { intm,c; while(scanf("%c",&m)) { c=(11*(m-97)+8)%26; printf("%c",c+97); } return0; }

看了大神的代码有所醒悟

c=Ek(m)=(k1m+k2)modn { c-k2=k1*mmodn 令k3*k1modn=1 得(c-k2)*k3=mmodn m=(c-k2)*k3 } m=Dk(c)=k3(c-k2)modn(其中(k3×k1)mod26=1)



defextendedGCD1(a,b):
#a*xi+b*yi=ri
ifb==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)


  
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: