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的主要内容,如果未能解决你的问题,请参考以下文章