python中的整洁长整数表示
我正在用Python编写简单的RSA解密例程(我对Python有点陌生),似乎找不到一种方法在代码中整齐地格式化长整数。 整数长度为2048位,如果写在一行上,则扩展到最右边。在C语言中,这样的整数将由一个单词数组表示,人们可以在一页上整齐地写出这个数组。 我将如何在Python中执行此操作?我尝试了显而易见的解决方案:python中的整洁长整数表示,python,rsa,long-integer,Python,Rsa,Long Integer,我正在用Python编写简单的RSA解密例程(我对Python有点陌生),似乎找不到一种方法在代码中整齐地格式化长整数。 整数长度为2048位,如果写在一行上,则扩展到最右边。在C语言中,这样的整数将由一个单词数组表示,人们可以在一页上整齐地写出这个数组。 我将如何在Python中执行此操作?我尝试了显而易见的解决方案: modulus = 0xaaaaa\ bbbbb\ ccccc 这根本不起作用。我发现唯一有用的是: smodulus = "\ aaaaa\ bbbbb\ ccccc" m
modulus = 0xaaaaa\
bbbbb\
ccccc
这根本不起作用。我发现唯一有用的是:
smodulus = "\
aaaaa\
bbbbb\
ccccc"
modulus = long(smodulus,16)
你能为长整数建议一种格式化方法吗
谢谢。制作您自己的解析字符串的函数,并使用该函数定义全局字符串
SMODULUS = parse("""
aaaab
bbbbb
ccccc
""")
def myFunc(...):
crypomath_and_stuff = SMODULUS | abc & etc
...
您可能可以绕过将其内联,避免使其成为全局的,但这取决于python解释器是否足够聪明,能够将常量函数编译成JIT风格的预处理数据(还取决于python语言的语义是否允许这样的优化)。为了亲自进行实验,您可以使用dis.dis
(python反汇编程序)来查看是否确实进行了优化(或者更可能的是,没有进行优化)。如果您根本不关心性能,或者这些是对使用parse
d变量的函数的一次性调用,您也可以将其内联
modulus =( 0xaaaaaaaa << 64
| 0xbbbbbbbb << 32
| 0xcccccccc << 0 )
module=(0xaaaaPython,因此您可以编写:
long('01234567'
'89abcdef'
'01234567'
'89abcdef',
16)
您正在询问如何在源代码中表示2048位整数(作为字符串文字),是吗?是的。这是正确的。我问的是如何将长整数表示为一个文字,但要简洁。到目前为止,所有的答案都是我原来的字符串方法的变体。我认为没有办法将长整数分解为一个实际的整数形式。你能给出一个它在C中的外观示例吗?出于某种原因,我不能在注释中发布C代码。But它看起来像无符号int
上的数组,每行有4或8个数字:0x11112222,0x11112222,0x11112222,0x11112222,
long('01234567'
'89abcdef'
'01234567'
'89abcdef',
16)