标签: twofish

Python 中的 Twofish 加密

我有一个测试工具,它使用 Twofish 作为加密算法,在将数据发送到服务器之前对其进行加密。该代码是用 C++ 编写的,并使用 Bruce Schneier 的优化 C 实现 ( https://www.schneier.com/code/twofish-optimized-c.zip )。我需要将此工具移植到Python,并且我正在使用twofish模块(https://pypi.python.org/pypi/twofish/0.3.0)。我可以加密和解密 16 个字符长度的字符串,但对于其他字符串长度,它会给出错误“ValueError:无效的块长度”。

如何使用 Python 的 Twofish 模块加密和解密大数据?

>>> from twofish import Twofish
>>> key = binascii.unhexlify('8CACBE276491F6FF4B1EC0E9CFD52E76')
>>> t = Twofish(key)
>>> cipher_text = T.encrypt('deadbeaf12345678')
>>> plain_text = t.decrypt(cipher_text)
>>> plain_text
'deadbeaf12345678'
>>> cipher_text = t.encrypt('deadbeaf12345678hello world 1234')
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/usr/local/lib/python2.7/site-packages/twofish.py", line 69, in encrypt
    raise ValueError('invalid block length')
ValueError: invalid block length
Run Code Online (Sandbox Code Playgroud)

更新: 我正在尝试解决此问题的另一种解决方案。我从 …

python encryption ctypes cryptography twofish

5
推荐指数
1
解决办法
8478
查看次数

Twofish密钥扩展

我试图按照1998年Bruce Schneider的论文中的描述逐步实现Twofish cypher .尽管如此,我在关键扩张方面已经失败了.

我试图将纸张1对1的细节复制到python中,结果如下:

#! /usr/bin/python3.2

def expandKey256 (key):
    m = [0] * (32)
    for i in range (32):
        m [i] = (key >> (i * 8) ) & 0xff
        #m [31 - i] = (key >> (i * 8) ) & 0xff
    print ('m = {}\n'.format ( [hex (b) for b in m] ) )

    M = [0] * 8
    for i in range (8):
        for j in range (4):
            M [i] += m [4 * …
Run Code Online (Sandbox Code Playgroud)

python cryptography python-3.x twofish

4
推荐指数
1
解决办法
518
查看次数

标签 统计

cryptography ×2

python ×2

twofish ×2

ctypes ×1

encryption ×1

python-3.x ×1