我需要引入大整数常量(Diffie-Hellman密钥交换中的质数)。
以符合PEP8标准的方式,最Pythonic / 美观的方法是什么?最好不要使用反斜杠。
我目前的方法大致如下:
N = '''FFFFFFFF FFFFFFFF C90FDAA2 2168C234 C4C6628B 80DC1CD1
29024E08 8A67CC74 020BBEA6 3B139B22 514A0879 8E3404DD
EF9519B3 CD3A431B 302B0A6D F25F1437 4FE1356D 6D51C245
E485B576 625E7EC6 F44C42E9 A637ED6B 0BFF5CB6 F406B7ED
EE386BFB 5A899FA5 AE9F2411 7C4B1FE6 49286651 ECE65381
FFFFFFFF FFFFFFFF'''
PRIME = int('0x{0}'.format(N.replace('\n', '').replace(' ', '')), 16)
不是非常美观,但比这个美观:
PRIME = 179769313486231590770839156793787453197860296048756011706444423684197180216158519368947833795864925541502180565485980503646440548199239100050792877003355816639229553136239076508735759914822574862575007425302077447712589550957937778424442426617334727629299387668709205606050270810842907692932019128194467627007L
编辑:
更改为PRIME = int(re.sub('\s+', '', N), 16)
0xffffffffffffffffc90fdaa22168c234c4c6628b80dc1cd129024e088a67cc74020bbea63b139b22514a08798e3404ddef9519b3cd3a431b302b0a6df25f14374fe1356d6d51c245e485b576625e7ec6f44c42e9a637ed6b0bff5cb6f406b7edee386bfb5a899fa5ae9f24117c4b1fe649286651ece65381ffffffffffffffff
(L
)可以使用,但你的N
更加优美。 - glglglPRIME = 1797...
。请记住,在正确性之后,源代码的主要目的不是漂亮,而是对读者有用。 - Steve Jessop''.join(N.split())
而不是N.replace('\n', '').replace(' ', '')
。 - Steve Jessop