0
点赞
收藏
分享

微信扫一扫

Alice与Bob-密码学之大素数分解-学习笔记


题目描述

密码学历史中,有两位知名的杰出人物,Alice和Bob。他们的爱情经过置换和轮加密也难以混淆,即使是没有身份认证也可以知根知底。就像在数学王国中的素数一样,孤傲又热情。下面是一个大整数:98554799767,请分解为两个素数,分解后,小的放前面,大的放后面,合成一个新的数字,进行md5的32位小写哈希,提交答案。

解题思路

这是一个大整数分解问题,是密码学中三大难题之一。
先生成一批素数:

def generate_prime_number():
with open('primes.txt', 'a') as f:
for i in range(2, 100000000000):
for j in range(2, i):
if i % j == 0:
break
else:
print(i)
f.write(str(i) + '\n')


generate_prime_number()

利用这批素数找答案:

def get_primers():
with open('primes.txt', 'r') as f:
primers = f.readlines()
return primers


primers = get_primers()
primers1 = []
for p in primers:
p = p.strip()
if len(p) > 5 and (p.endswith('1') or p.endswith('7') or p.endswith('3') or p.endswith('9')):
print(p)
primers1.append(p)

half = int(len(primers1)/2)
for i in primers1[0:half]:
i = int(i)
for j in primers1[half:]:
j = int(j)
ij = str(i) + ' ' + str(j)
print(ij)
if i * j == 98554799767:
with open('log.txt', 'w') as f1:
f1.write(ij)
break

结果:

101999 966233
d450209323a847c8d01c6be47c81811a

另外更方便的是在线分解:
​​​ http://factordb.com/index.php?query=98554799767​​


举报

相关推荐

0 条评论