使用PHP加密数据

时间:2015-09-06 19:42:07

标签: php crypt

我有这段代码:

    $token = $this->hextobin($dataEncrypt);
    $key = $this->key_192;
    $iv = $this->iv;
    $algorithm = 'xxxx';
    $mode = 'ecb'; //QUESTION!!!
    $td = mcrypt_module_open($algorithm, '', $mode, '') ;
    $iv = substr($iv, 0, mcrypt_enc_get_iv_size($td));
    $expected_key_size = mcrypt_enc_get_key_size($td);
    $key = substr($key, 0, $expected_key_size);
    mcrypt_generic_init($td, $key, $iv);
    $response = trim(mdecrypt_generic($td, $token), '');
    mcrypt_generic_deinit($td);
    mcrypt_module_close($td);
    $response = explode(XXXX,$response);
    return $response[0];

但是阅读PHP文档,特别是:http://php.net/manual/en/function.mcrypt-ecb.php说它已经过时,建议使用mcrypt_generic()和mdecrypt_generic()进行替换。 我的问题是如果你以同样的方式问我开放模式如何使用这些功能?

1 个答案:

答案 0 :(得分:2)

此处解释了使用public boolean deleteAndSaveAll(ArrayList<MyData> listBean) throws Exception { boolean transactionCompleted = false; Session session = HibernateUtils.currentSession(); Transaction tx = session.beginTransaction(); try { String stringQuery = "DELETE FROM MyData"; Query query = session.createQuery(stringQuery); query.executeUpdate(); for (MyData MyData : listBean) { session.save(MyData); } tx.commit(); transactionCompleted = true; } catch (Exception e) { MyUtils.log("DAO: MyDataDAO error while deleteAndSaveAll : "+e.getMessage()); e.printStackTrace(); if(tx != null){ tx.rollback(); } throw e; }finally{ HibernateUtils.closeSession(); } return transactionCompleted; }

但是,我建议使用更简单的API mcrypt_generic()

使用示例:

mcrypt

我注意到mcrypt_encrypt(MCRYPT_3DES, "secret key", "data to encrypt", MCRYPT_MODE_ECB); 上有问号。这是这里解释的加密的“模式”:

http://php.net/manual/en/mcrypt.constants.php

根据PHP文档:

  • MCRYPT_MODE_ECB (电子密码本)适用于随机数据,例如加密其他密钥。由于数据短而随机,欧洲央行的缺点有负面影响。
  • MCRYPT_MODE_CBC (密码块链接)特别适用于加密安全性显着超过ECB的文件。
  • MCRYPT_MODE_CFB (密码反馈)是加密单字节必须加密的字节流的最佳模式。
  • MCRYPT_MODE_OFB (输出反馈,8位)与CFB相当,但可用于无法容忍错误传播的应用中。它不安全(因为它以8位模式运行)因此不建议使用它。
  • MCRYPT_MODE_NOFB (输出反馈,nbit)与OFB相当,但更安全,因为它根据算法的块大小进行操作。
  • MCRYPT_MODE_STREAM 是一种额外的模式,可以包含一些像“WAKE”或“RC4”这样的流算法。

<强>更新 如果您使用ecb模式,请务必设置CBC,如下所示:

iv