CodeIgniter 加密类到 java

Posted

技术标签:

【中文标题】CodeIgniter 加密类到 java【英文标题】:CodeIgniter Encrypt class to java 【发布时间】:2013-11-01 22:37:03 【问题描述】:

我正在使用 Encrypt 类对来自 codeigniter 的一些数据进行加密,这将被发送到 java 程序并需要在那里解码。

php代码:

    $this->load->library('encrypt');
    $this->encrypt->set_key(SERVER_ENCRYPT_KEY);
    $this->encrypt->set_mode(MCRYPT_MODE_CFB);
    $this->data = $this->encrypt->encode($this->input->post('data'));

SERVER_ENCRYPT_KEY 是关键。

我找到了这个:MCrypt for Java,但我无法让它工作。 还有其他库可以做到这一点吗?或者可能是如何使用 Java 版本的 MCrypt 来执行此操作的示例。

【问题讨论】:

【参考方案1】:

查看CI_Encrypt 类。除了调用 mcrypt 库之外,它还做了各种非标准的事情。例如,它通过自己发明的_add_cipher_noise 方法运行加密数据。此外,加密格式似乎随着版本的不同而发生了变化——这表明这种情况可能会再次发生。

如果您要在 codeignite 之外使用加密数据,则不应使用看起来像 codeignites 自己的 mcrypt 加密数据打包的东西。

【讨论】:

我看到加密中增加了噪音,我在 java 上也做了同样的事情,但我想知道是否有人确实设法在 codeigniter 之外使用加密数据。我正在尝试这样做以避免要求 +10k 客户再次重新输入一些数据。但也许最后我会在双方都应用自定义加密方法。 请注意,您从 codeigniter 中的编码调用获得的消息不是自包含的。解密时,您需要预先知道用于加密的密码。用户可能使用了$this->encrypt->set_cipher();,您不能从消息中扣除它。此外,如果 mcrypt 不存在,它会退回到其他方法 - 这也需要处理。 密码使用默认值MCRYPT_RIJNDAEL_256,mcrypt模式使用MCRYPT_MODE_CBC。还安装了 mcrypt。【参考方案2】:

我决定避免使用 CI_Encrypt 并使用此 PHP-Java-AES-Encrypt 并稍作改动:添加噪音并使用 2 种类型的密钥。我还构建了一个工具来将旧的加密数据转换为新格式。

【讨论】:

以上是关于CodeIgniter 加密类到 java的主要内容,如果未能解决你的问题,请参考以下文章

php 错误:加密库需要 codeigniter 中的 Mcrypt 扩展

没有斜杠的Codeigniter加密

CodeIgniter扩展加密类

PHP CodeIgniter扩展加密类

Codeigniter 3 MySQLi 安全数据库连接

Sha512 不起作用...请帮助 CODEIGNITER