网络安全技术视角解析
1. 密码学基础算法
1.1 质数算法与信息加密
取一个大数除以“木星数”的余数,能得到原始信息。例如,当前已知最大质数为 (2^{82,589,933} - 1),有 24,862,048 位,使用这么大的质数进行加密计算量较大。目前常用的 2048 位加密,使用的数字长度略超 600 位,比“木星数”大一点。
要得到 43 和 211 这两个数,需用到欧拉函数。对于两个质数 (p)、(q) 的乘积 (N = p * q),小于 (N) 的质数个数 (T = (p - 1)(q - 1))。如 (p = 19),(q = 29),则 (N = 551),(T = 504)。
选取 43 这个数(有一定限制条件),再找一个数与 43 相乘后对 504 取余结果为 1,这个数是 211。假设 Fred 要给 Fiona 发消息 63(文本块转换的数字),他用 43(Fiona 的公钥)加密,Fiona 用 211(她的私钥)解密得到原始消息。以下是实现此过程的 Python 代码:
#!/usr/bin/python
FredMessage = 63**43 # Raise arbitrary number (63) to power of 43
print FredMessage
# This is a huge number
# Fiona’s public key, 43, encrypting the message 63
FionaDecode = FredMessage**211 # Fiona her private key, 211
p