gpt4 book ai didi

python - python 中的 ISAAC 密码

转载 作者:行者123 更新时间:2023-11-30 23:53:00 32 4
gpt4 key购买 nike

有人有 ISAAC 密码在 python 中的有效实现吗?

我试图找到这个,但似乎没有人做到过。

谢谢。

最佳答案

我在 ISAAC home page 上阅读了一些代码示例并且代码看起来很容易实现。如果您需要纯 Python 版本,有几个其他语言的示例可以指导您的移植工作。

从 Python 使用 isaac() 的另一种方法是将 C 代码构建为共享库,并通过 ctypes module, which is standard in 2.5+ 访问它。 ,但可以是found on PyPI for earlier versions 。这也应该比纯 Python 中的直接移植表现得更好。

下面是一个将 C 版本的 isaac() 构建为共享库并通过 ctypes 使用它的示例。首先您需要从作者网站下载rand.crand.hstandard.h,然后构建:

% gcc -shared -fPIC -o libisaac.so rand.c

这是Python代码。请注意,RandCtx 中字段的大小取决于代码是针对 32 位平台还是 64 位平台构建。我在 64 位 Ubuntu 上进行了测试。对于 32 位,您需要更改所有字段以使用 c_uint32:

from ctypes import *

class RandCtx(Structure):
RANDSIZL = 8
RANDSIZ = 1 << RANDSIZL
_fields_ = [
('randcnt', c_uint64),
('randrsl', c_uint64 * RANDSIZ),
('randmem', c_uint64 * RANDSIZ),
('randa', c_uint64),
('randb', c_uint64),
('randc', c_uint64)
]

ctx = RandCtx()
lib = cdll.LoadLibrary('./libisaac.so')
lib.randinit(byref(ctx), 0)
lib.isaac(byref(ctx))

for i in xrange(4):
print ctx.randrsl[i]

输出:

% python isaac.py
14012348966175605106
8193820543905647488
4194352129441799609
12121047914186473054

关于python - python 中的 ISAAC 密码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6127076/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com