首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在mcrypt上使用enigma

在mcrypt上使用enigma
EN

Stack Overflow用户
提问于 2020-06-13 06:10:24
回答 1查看 42关注 0票数 0

所以我的目标是演示一个在线版本的谜语机器。我使用PHP来做这件事,并使用mcrypt,因为它似乎是使用enigma算法的唯一方法,而不需要我自己写出来。问题是,目前还没有关于如何设置mcrypt之谜的信息。我也在使用流,因为在没有人问起之前,似乎没有其他东西可以工作。对于这方面的任何帮助,我都会非常感谢。

这是我当前的设置。

代码语言:javascript
复制
$td = mcrypt_module_open('enigma', '', 'stream', '');
$iv = mcrypt_create_iv(mcrypt_enc_get_iv_size($td), MCRYPT_DEV_RANDOM);
$ks = mcrypt_enc_get_key_size($td);
$key = substr(md5('very secret key'), 0, $ks);
mcrypt_generic_init($td, $key, $iv);
$encrypted = mcrypt_generic($td, 'This is very important data');
mcrypt_generic_deinit($td);
mcrypt_generic_init($td, $key, $iv);
$decrypted = mdecrypt_generic($td, $encrypted);
mcrypt_generic_deinit($td);
mcrypt_module_close($td);
echo trim($decrypted) . "\n";

我如何让它以谜的方式加密,然后像普通文本一样以密文形式显示?

EN

回答 1

Stack Overflow用户

发布于 2020-06-13 23:37:22

在运行你的代码时,我得到了这样的警告:

代码语言:javascript
复制
Warning: mcrypt_create_iv(): Cannot create an IV with a size of less than 1 or greater than 2147483647

出现该错误的原因是

代码语言:javascript
复制
mcrypt_enc_get_iv_size($td)

给出的值为'0':

代码语言:javascript
复制
$ivSize = mcrypt_enc_get_iv_size($td);
echo "ivSize: " . $ivSize;
ivSize: 0

解决方案是使用空白IV:

代码语言:javascript
复制
$iv = "";

一切都像预期的那样工作:

代码语言:javascript
复制
echo trim($decrypted) . "\n";
This is very important data
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62353175

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档