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

用openssl_encrypt代替Mcrypt进行3DES-ECB加密

宗项禹
2023-03-14

我有一个加密方法与我的加密,密码是3des,模式ecb

mcrypt_module_open ( MCRYPT_3DES, '', 'ecb', '' )

现在我想使用<code>openssl_encrypt</code>对它进行加密,但在<code〕openssl_ get_cipher_methods()</code>列表中找不到<code<des3 ecb</code>。

共有1个答案

胡墨竹
2023-03-14

现在我想用openssl_encrypt加密它,我没有在openssl_get_cipher_methods()列表中找到des3-ecb

是< code>des-ede3。使用分组密码的对称加密需要某种操作模式。如果您浏览列表,您会看到类似于< code>des-ede3 、< code>des-ede3-cbc 、< code>des-ede3-cfb和< code>des-ede3-ofb的内容。加拿大广播公司、CFB和OFB都有名字,而未命名的密码肯定是唯一的另一种常见操作模式:欧洲央行。

切勿使用ECB模式。它是确定性的,因此在语义上不安全。你至少应该使用像CBC或CTR这样的随机模式。最好对密文进行身份验证,这样就不可能进行填充预言攻击。这可以通过GCM或EAX等身份验证模式,或使用先加密后MAC方案来完成。

现在不要使用三重DES。它最多只能提供 112 位的安全性,即使您使用的最大密钥大小为 192 位。如果使用较短的密钥大小,则它仅提供 56 或 57 位的安全性。AES会更快(处理器具有特殊的AES-NI指令集),并且使用128位的最低密钥大小更安全。3DES的最大密文大小也有实际限制。请参阅 3DES 和 AES 的安全性比较。

 类似资料:
  • 问题内容: 从PHP 7.1.0开始不推荐使用Mcrypt函数。 我不赞成使用的字符串编码/解码功能: 您能建议一些替代方法吗? 问题答案: 您应该改用openssl_encrypt。

  • 以下是我的加密/解密方法: 所以现在当我尝试加密时,我得到了这个异常: 我已经尝试在encrypt和Decrpt中使用密码实例。它只用于加密而不用于解密。我认为需要填充,因为数据大小不是16字节的倍数。“data”字节长度打印为,因此尝试将字符附加到数据中,然后进行加密,但也不起作用。

  • 请在膝盖抽搐之前阅读这个问题(尽管如果真的是,不确定为什么我找不到它,但很棒! 多年来,我们一直在模式下将mcrypt与模块一起使用。我们有很多东西用它加密。 我们必须迁移到的PHP 7.2不再包含mcrypt。 Openssl AES不支持192块大小(或128以外的任何大小)。接下来,我将更改对称加密。 我遇到的问题是遗留数据,如果没有mcrypt,我看不到如何解密它。没有修改遗留数据的选择,

  • 问题内容: 由于不建议使用Mcrypt,因此我想在代码中使用OpenSSL,因为我们已经在服务器中使用 php 7.0.17 ,并且不知道何时升级。 一些第三方API(可能在 PHP 5.x 上托管并使用 mcrypt )正在获取加密数据。他们提供了用于加密/解密字符串的方法。 他们在这 如果已加密,则使用这些方法字符串 我们想在我们这边使用,如果我们使用OpenSSL加密相同的字符串,则它必须提

  • 问题内容: 我有一个应用程序,该应用程序必须发送先由MD5然后由3DES加密的登录凭据。 我设法使用CryptoSwift通过MD5加密字符串。但是我找不到任何可以在Swift上通过3DES加密的东西。 我已经尝试过CommonCrypto。据我所知,这是用C语言编写的,但可以通过桥接头导入到目标C语言中。 我发现了一些文章和教程,它们告诉我如何通过桥接标头(警告它不适用于框架)或Model.ma

  • 由于Mcrypt已被弃用,我想在我的代码中使用OpenSSL,因为我们已经在服务器中使用了php7.0.17,并且不知道他们何时升级它。 一些第三方API(可能托管在PHP 5.x上并使用mcrypt)正在获取加密数据。他们提供了用于加密/解密字符串的方法。 他们在这里 使用这些方法string<code>small1</code>如果加密,则变为<code>v7IXp5vVaFVXlt/MN8B