乘法逆元及其应用
2016-02-16 19:39
190 查看
满足 a * k ≡ 1 (mod p) 的k 叫做 a关于p的乘法逆元。另一种表达方法是 k ≡ a-1 (mod p)
逆元在密码学中有广泛应用,AES密码体系的字节替代就是运用了逆元。(不知道说的smg)
(a*b)%p=(a%p)*(b%p)%p
而求(a/b)%p时,可能会因为a是一个很大的数,不能直接算出来,却又不能(a/b)%p=(a%p/b%p)%p。
但是可以通过 k ≡ b-1 (mod p)
a / b
= a * b-1 (mod p )
= (a mod p ) * (b-1 mod p ) mod p
= (a mod p ) * (k mod p ) mod p
= a * k mod p
转换为a*k % p 的问题,然后a是一个加减乘的式子,就可以用上面两个取余公式了。
逆元在密码学中有广泛应用,AES密码体系的字节替代就是运用了逆元。(不知道说的smg)
应用:
我们知道(a+b)%p=(a%p+b%p)%p(a*b)%p=(a%p)*(b%p)%p
而求(a/b)%p时,可能会因为a是一个很大的数,不能直接算出来,却又不能(a/b)%p=(a%p/b%p)%p。
但是可以通过 k ≡ b-1 (mod p)
a / b
= a * b-1 (mod p )
= (a mod p ) * (b-1 mod p ) mod p
= (a mod p ) * (k mod p ) mod p
= a * k mod p
转换为a*k % p 的问题,然后a是一个加减乘的式子,就可以用上面两个取余公式了。
相关文章推荐
- 高通平台工作总结(一)
- Ubuntu 的基本操作
- remove()
- BitmapFactory.Options 图片解析
- HDU3714 Error Curves
- 我的OCM之路
- 【010】Xcode7编译时App installation failed There was an internal API error.
- 329. Longest Increasing Path in a Matrix LeetCode
- mysql更新一个表里的字段等于另一个表某字段的值
- python子进程模块subprocess详解与应用实例 之三
- Android Studio相关配置Mac版
- LeetCode 300. Longest Increasing Subsequence 解题报告
- BZOJ_P2005&Codevs_P1937 [NOI2010]能量采集(数论GCD)
- Java迭代foreach详解(java.util.ConcurrentModificationException的原因)
- ES6个人学习整理(八)——Class
- 机房重构——选中的下机/选中的用户删除
- C#开发微信公众平台-就这么简单
- 泛型算法概览
- java实现无向图的深度优先搜索和广度优先搜索
- mongodb基本指令操作