【问题标题】:phpseclib zero byte paddingphpseclib 零字节填充
【发布时间】:2019-07-18 12:05:55
【问题描述】:

如何在EBC模式下使用加密方法3des在phpseclib中添加零字节填充?

这是我当前的代码:

$cipher = new TripleDES(TripleDES::MODE_ECB);
$cipher->setKey('1234567890ABCDEFGHIJKLMN');

【问题讨论】:

  • $cipher->enablePadding(); 怎么样?由于TripleDES 扩展DES 扩展BlockCipher 扩展SymmetricKey,您可以使用SymmetricKey 类中定义的enablePadding() 函数:github.com/phpseclib/phpseclib/blob/master/phpseclib/Crypt/…。但实际上并没有尝试。
  • 可以在 enablePadding 方法中自定义填充字符吗?例如 $cipher -> enablePadding('\0');

标签: php encryption phpseclib 3des


【解决方案1】:

想办法:

  1. 禁用填充:

    $cipher->disablePadding();
    
  2. 手动填充消息:

    $message_padded = $urlencoded;
    if (strlen($message_padded) % 8) {
        $message_padded = str_pad($message_padded,
            strlen($message_padded) + 8 - strlen($message_padded) % 8, "\0");
    }
    
  3. 加密:

    $result = $cipher -> encrypt($message_padded);
    

【讨论】:

  • 您的方法看起来不错,但您为什么要这样做?顺便说一句,您可以添加一个新方法来包装上述代码,以便您可以轻松地重用自定义的填充方法。
  • 1.因为有一个服务(合作伙伴)需要上面的加密方法。 2.我试试,谢谢建议
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-07-01
  • 1970-01-01
  • 1970-01-01
  • 2012-02-17
  • 2012-07-09
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多