仿射密码算法

senkiner 2005-01-08 11:35:38
加密函数为 c=am+b(mod 26)
解密函数为 m=k(y-b)(mod 26)
注:k为a的-1次方

请问:k是怎样求的啊?
比如 a=7的时候,知道k=15
...全文
272 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
senkiner 2005-01-08
  • 打赏
  • 举报
回复
另外,我把其他几个数的也写出来:
a=3时,k=9
a=5时,k=21
a=7时,k=15
a=11时,k=19
================================
k的数值为 (a的-1 次方 mod 26)
也就是 (a的-1 次方 mod 26)是怎样求的阿?
senkiner 2005-01-08
  • 打赏
  • 举报
回复
递归的,是否有初始值?
比如知道a=5,b=26,怎样求x啊?
LeeMaRS 2005-01-08
  • 打赏
  • 举报
回复
k * k^-1 = 1 (mod 26)

k^-1叫k的模逆, 可以用扩展的Euclid算法求出来.

ax = 1 (mod 26) 其中x = a^-1

相当于 ax + by = 1, b = 26, 求满足条件的一组x, y. 当然我们只要x就好.

现在考虑一般的 ax + by = 1 如何求解.

满足条件的x, y存在的条件是G C D(a, b) = 1.

然后有 ax + by = G C D(a, b)
有 bx' + (a % b)y' = G C D(b, a % b)

而且有Euclid定理 G C D(a, b) = G C D(b, a % b)

所以, 有ax + by = bx' + (a % b)y'
= bx' + (a - [a/b]*b)y'
= bx' + ay' - [a/b]*b y'
= ay' + b(x' - [a/b]y')

对应, 得x = y', y = x' - [/b]y'. [a/b]是a/b再取整.

特别的, 在b = 0的时候, G C D(a, b) = a = a * 1 + b * 0
即 x = 1, y = 0

这样我们就得到一个递归的扩展Euclid算法.

jim138 2005-01-08
  • 打赏
  • 举报
回复
UP ::)

33,010

社区成员

发帖
与我相关
我的任务
社区描述
数据结构与算法相关内容讨论专区
社区管理员
  • 数据结构与算法社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧