【问题标题】:Emulate openssl rc4-40 in "plain" perl在“普通” perl 中模拟 openssl rc4-40
【发布时间】:2013-09-19 00:23:30
【问题描述】:

我已经尝试了几个小时,但运气不佳,尽管我怀疑这只是我太密集了。

首先进行设置,这样您就不会试图说服我。 :P 我有一个盒子,它对它的 openssl lib 有限制,这样它就不会在 40 位的加密中执行 rc4。我有一个使用 rc4-40 的旧功能,我不能随意将加密升级到更难的位级别,因为它与我无法控制或授权的其他软件对话。

因此,受限于 40 位 RC4 并且不能使用 openssl。任何不回退到 openssl 的 XS/perl 都应该很棒。我一直在玩几个模块,但没有什么是开箱即用的,而且我不擅长这种事情,所以看不到如何自己修改/monkey-patch/fork key/bit 处理代码。

代码目前正在这样做-

echo -ne "OHAI" |  openssl rc4-40 -d -nosalt -k  KeyPhrase0123456 | xxd
0000000: cbf7 71b2                                ..q.

替换它的天真尝试是失败的-

perl -MCrypt::RC4 -e 'print RC4("KeyPhrase0123456", "OHAI")' | xxd
0000000: bc14 808b                                ....

所以我需要一些版本的 perl 代码来匹配 openssl 调用。我一直在尝试所有可以在 CPAN 上找到的合理的东西(c.f.,不是基于 openssl),包括 Crypt::RC4(::XS) 和 Net::SSH::Perl::Cipher::RC4。谷歌在Authen::SASL 中引导我找到了一些明显相关且经过改编的代码——除了它似乎支持使用 rc4-40 进行身份验证之外,这太令人困惑了。我没有尝试Crypt::GCrypt,虽然它看起来很有希望,但我看不到正确的用法。受阻。

这个——RC4 doesn't work correctly with openssl command? — 很有启发性,但最终没有帮助我处理键/短语或设置。

感谢收看!

更新:在阅读了更多关于 FIPS mode 的内容后,我认为 Crypt::GCrypt 也将无法正常工作,即使我知道调用是否正确。

【问题讨论】:

  • 您是说您必须使用现有的 Perl 安装并具有这些限制吗?或者您不知道如何安装另一个 Perl? (perlbrew)。
  • 由于您当前使用的是 shell 脚本,因此您没有理由不能使用不同的 perl。由于 shell 脚本必须驻留在 somewhere ,因此备用 perl 没有理由不能驻留在同一个地方。任何谈论这样做的安全性都是愚蠢的,因为它根本不会降低现有安装的安全性。
  • @David-SkyMesh,对不起,没有。我可以使用任何 perl,但没有任何依赖于 openssl 的 perl 库。 perl 方面完全由我控制,而锁定的 openssl 则不是。
  • Alien::OpenSSL使用 openssl,它提供 openssl。

标签: perl openssl rc4-cipher


【解决方案1】:
echo -ne "OHAI" |  openssl rc4-40 -d  -nosalt -k KeyPhrase0123456 | xxd
0000000: cbf7 71b2                                ..q.

perl -MCrypt::RC4 -MDigest::MD5 -e 'print RC4(substr(Digest::MD5::md5("KeyPhrase0123456"),0,5), "OHAI")' | xxd
0000000: cbf7 71b2                                ..q.

substr(Digest::MD5::md5("KeyPhrase0123456"),0,5) - 5*8=40bit

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-10-15
    • 2015-07-22
    • 2020-09-06
    • 2015-04-22
    • 1970-01-01
    • 2019-05-25
    • 1970-01-01
    相关资源
    最近更新 更多