【问题标题】:Encryption and Decryption for Triple DES in PHP Example in ECB ModeECB模式下PHP示例中三重DES的加解密
【发布时间】:2018-12-06 08:40:19
【问题描述】:

能否给我一个完整的例子,说明如何用 PHP 语言创建加密和解密?我使用 hexa 作为数据和密钥。我通过谷歌搜索,发现有一个网站符合我的预期,即here

以此为例:

数据: 225551100012FFFF

密钥: DC1C1F2B180F85D8D522A75D2354ED149A5B81F198387B51

当我解密时,我得到了389da227862957c4

提前谢谢你!

【问题讨论】:

  • 到目前为止您尝试过什么?由于 Stack Overflow 不是免费的编码服务,因此您应该先努力解决自己的问题,然后再在这里提问。
  • 尝试了很多其他人告诉我的解决方案,比如下面这个链接:stackoverflow.com/questions/22592919/…,现在我用 Go 编写代码,看看是否可以用那种语言解决。

标签: php encryption tripledes


【解决方案1】:

从这个网站http://www.isapp.it/en/menu-en/31-tips-a-tricks/php/118-php-how-to-encrypt-text-in-triple-des-ecb.html找到我的答案

但是因为我想使用六进制加密和解密它,所以我将代码稍微修改为这个

function cryptECB($crypt, $key) {
    //Omit hex2bin and bin2hex if plain text is used
    $crypt = hex2bin($crypt);
    $key = hex2bin($key);

    $iv_size = mcrypt_get_iv_size(MCRYPT_3DES, MCRYPT_MODE_ECB);
    $iv = mcrypt_create_iv($iv_size, MCRYPT_RAND);

    $cryptText = mcrypt_encrypt(MCRYPT_3DES, $key, $crypt, MCRYPT_MODE_ECB, $iv);

    return bin2hex($cryptText);
}

function decryptECB($encrypted, $key) {
    //Omit hex2bin and bin2hex if plain text is used
    $encrypted = hex2bin($encrypted);
    $key = hex2bin($key);
    $iv_size = mcrypt_get_iv_size(MCRYPT_3DES, MCRYPT_MODE_ECB);
    $iv = mcrypt_create_iv($iv_size, MCRYPT_RAND);

    $stringText = mcrypt_decrypt(MCRYPT_3DES, $key, $encrypted, MCRYPT_MODE_ECB, $iv);

    return bin2hex($stringText);
}

【讨论】:

  • ECB 模式不安全,3DES 是旧密码,mcrypt 库未维护且基于不良做法。没有复制/粘贴安全之类的东西;你必须先学习密码学。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-05-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多