当前位置: 首页 > 知识库问答 >
问题:

Perl Crypt Eksblowfish加密字符串,必须在python中解密

邵华皓
2023-03-14

Perl脚本使用此模块加密字符串http://search.cpan.org/~zefram/Crypt-Eksblowfish-0.009/lib/Crypt/Eksblowfish.pm

我需要用python编写解密函数。我知道钥匙和盐。我试图使用py-bcrypt,但似乎两个等价函数

$ciphertext=$cipher-

没有实施。

我该怎么办?有没有python模块可以帮助我解密字符串?

共有1个答案

卫阳曜
2023-03-14

更新:完整的答案是Perl代码:

my $cipher = Crypt::EksBlowFish->new($cost, $salt, $key);

相当于这个Python代码:

bf = Eksblowfish()
bf.expandkey(salt, key)
for i in xrange(cost << 1):
  bf.expandkey(0, key)
  bf.expandkey(0, salt)

见此回购例如代码:https://github.com/erantapaa/python-bcrypt-tests

原始答复:

部分答案。。。

我假设您是这样调用这个Perl代码的:

use Crypt::EksBlowfish;

my $cipher = Crypt::EksBlowFish->new($cost, $salt, $key);
$encoded = $cipher->encrypt("some plaintext");

新的方法由lib/Crypt/eksblowfish中的C函数setup_eksblowfish_ks()实现。xs。这看起来与Python代码(link)中的expandKey方法相同

主要的区别是$cos参数,它在Python方法中不存在。在Perl代码中,$成本参数控制在设置了关键计划后执行此循环的次数:

    for(count = 1U << cost; count--; ) {
            for(j = 0; j != 2; j++) {
                    merge_key(j == 0 ? expanded_key : expanded_salt, ks);
                    munge_subkeys(ks);
            }
    }

Perl-

bf.cipher(xl, xr, bf.ENCRYPT)

其中,xl和xr是分别表示左32位和右32位的整数。

所以食谱应该是这样的:

  1. 创建Python对象bf=EksBlowfish()
  2. 初始化密钥计划:bf。expandkey(salt,key)
  3. 使用成本参数(待定)进一步修改关键进度表
  4. bf加密。密码(xl、xr、bf.加密)

 类似资料:
  • 问题内容: 我在PHP中有一个函数,可按如下所示加密文本: 如何在Python中解密这些值? 问题答案: 要解密这种加密形式,您将需要获得Rijndael版本。在这里可以找到一个。然后,您将需要模拟PHP Mcrypt模块中使用的键和文本填充。它们增加了填充文本和键的正确大小。他们使用的是256位块大小,并且您提供的密钥使用的密钥大小为128(如果您提供更大的密钥,则密钥大小可能会增加)。不幸的是

  • 使用lib中的模块在python中解密和加密字符串。最简单的方法 现在我想解密我之前输入的字符串。。

  • 我知道有几个与此相关的问题,但是大多数答案都提供了.NET4.0及以上版本的解决方案。对于我的用途,我必须以.NET3.5为目标。我想简单地加密和解密一个字符串存储在一个文件中,所讨论的文本不是敏感的用户/个人信息。

  • B'x\x85\x92\x9D\xE6\x0BJ\xFE\x9B(\x10G\x8E\x05\xC5\xF4\xCDA9\xC18\xB8\xF9VBMK\x16\xF8\xA3\xB6' 我试着用 和

  • 问题内容: 我正在通过Apache和Node.js服务器之间的不安全连接发送数据。我需要在PHP中加密数据并在Node.js中解密。我花了2天的时间使它正常工作,但是我只设法使消息签名正常工作,没有加密。我尝试将AES128-CBC,AES256-CBC,DES,AES128,AES256作为算法传递,但是效果不佳。 我在PHP中尝试过: 在Node.js中: 而且除了错误的解密数据外,我还会得到

  • 我感兴趣的是构建一个个人使用的小应用程序,它将使用JavaScript在客户端加密和解密信息。加密的信息将存储在服务器上的数据库中,但不会存储解密的版本。 它不一定要是超级duper安全的,但我想使用一个当前未中断的算法。 理想情况下我可以做一些 生成编码字符串,以及类似于 以后再解码。 到目前为止,我已经看到了以下内容:http://bitwiseshiftleft.github.io/sjcl