密码学中的数学与编程实践
1. 有限域运算
在有限域中,我们可以进行各种数学运算。例如,对于素数 prime = 31 ,我们可以进行如下计算:
prime = 31
print(3*pow(24, prime-2, prime) % prime)
print(pow(17, prime-4, prime))
print(pow(4, prime-5, prime)*11 % prime)
上述代码分别输出 4 、 29 和 13 。同时,我们可以定义有限域元素的除法方法 __truediv__ :
class FieldElement:
def __truediv__(self, other):
if self.prime != other.prime:
raise TypeError('Cannot divide two numbers in different Fields')
num = self.num * pow(other.num, self.prime - 2, self.prime) % self.prime
return self.__class__(num, self.prime)
这个方法利用了费马小定理,即 self.
超级会员免费看
订阅专栏 解锁全文

被折叠的 条评论
为什么被折叠?



