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

为什么php通过mcrypt_encrypt()生成的密码文本长度与C通过openssl加密库生成的密码长度不同

衡翰翮
2023-03-14

我尝试了openssl wiki中的这段代码,它通过aes-256算法生成密码文本。输入纯文本的长度为512字节。然而,输出的长度是不同的。PHP生成长度为512字节的输出,而C生成长度为528字节的密码文本。

为什么存在这样的差异,我如何使用 aes-256 算法在 PHP 中加密文本,然后在 C 中解密它?

共有1个答案

翟淮晨
2023-03-14

您应该查找mcrypt_encrypt的注释部分,以使用PKCS#7填充方法填充明文消息。PHP使用零填充直到块边界上的第一个值,而不是通常使用的ad-hoc PKCS#7填充方法。

零填充的问题在于,对于可能以00字节值结尾的消息来说,它不是确定性的,因为这可能会在解填充期间被删除。

 类似资料:
  • 本文向大家介绍python随机生成指定长度密码的方法,包括了python随机生成指定长度密码的方法的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了python随机生成指定长度密码的方法。分享给大家供大家参考。具体如下: 下面的python代码通过对各种字符进行随机组合生成一个指定长度的随机密码 python中的string对象有几个常用的方法用来输出各种不同的字符: 输出ascii码的所有

  • 我从这里得到了提示:PHP中的双向加密 作为测试环境,im运行WAMP LocalHost。

  • <?php $pw='simplewind'; $afpw=sp_password($pw);//加密字符串 echo $afpw;//输出加密后的字符串 ?>

  • 我一直在尝试在AWS Lambda上生成一个RSA密钥对,以取代当前在PuTTYgen上手动生成的密钥。PuTTYgen上生成的密钥是RSA类型,长度为2048,这将生成一个示例密钥(无注释),如下所示- 现在我一直在尝试用下面的代码在NodeJS lambda上复制相同的代码- 在执行此lambda时,生成的公钥如下所示- 就我对RSA密钥的理解而言,第一行和最后一行不应该有任何区别,因为它们基

  • 在Java代码中,我应该解密一个加密的单词,如下所示: 我是加密新手,但是我发现了一些如何用Java加密/解密一些AES/CBC的示例。但是它需要盐、密钥和Iv。我发现OpenSsl正在从“密码”中导出这些值,但我没有发现如何Java解密加密值。 有人知道它是怎么工作的吗?盐、钥匙和/或Iv是否存储在加密值中?谢谢你的回答。

  • 我的问题来自于如何用blowfish散列长密码(>72个字符) 我正在使用bcrypt(blowfish)对密码进行散列。因此,我从这个问题中发现https://security.stackexchange.com/questions/39849/does-bcrypt-have-a-maximal-password-length 它的字符限制为72。 所以,我开始考虑限制密码的最大长度,但在这些