【问题标题】:Encrypting in JAVA & PHP return different results在 JAVA 和 PHP 中加密返回不同的结果
【发布时间】:2019-04-03 12:11:36
【问题描述】:

我在尝试将一些代码从 JAVA“翻译”到 PHP 时遇到问题。

我已经尝试了很多功能,但没有任何方法可以让我在双方都获得相同的结果。

JAVA 代码

public static String encrypt(String text, String key, String charset) throws Exception {
    byte[] keyBytes = Base64.decodeBase64(key);
    SecretKeySpec secretKeySpec = new SecretKeySpec(keyBytes, ALGORITHM);

    Cipher cipher = Cipher.getInstance(ALGORITHM);
    cipher.init(Cipher.ENCRYPT_MODE, secretKeySpec);
    byte[] textBytes = text.getBytes(charset);
    byte[] bytes = cipher.doFinal(textBytes);

    return new String(Base64.encodeBase64(bytes), charset);
}

关键参数 -> "NWelNxflgZ+rjP0bo2gi2Q=="
文本参数 -> “我是一个测试”
字符集参数 -> “UTF-8”
算法常数 -> AES

结果 -> "13vh3qeuc+kN7NvcKwM6pw=="


PHP 代码

function encryptAES($text, $key)
{
    $key = strtohex($key);
    $encrypt = openssl_encrypt($text, 'aes128', $key, OPENSSL_RAW_DATA);
    if (!$encrypt) {
        throw new Exception('AES encryption error');
    }
    return base64_encode($encrypt);
}

function strtohex($x)
{
    $s='';
    foreach (str_split($x) as $c) $s.=sprintf("%02X",ord($c));
    return($s);
}

关键参数 -> "NWelNxflgZ+rjP0bo2gi2Q=="
文本参数 -> “我是一个测试”

结果 -> "Vs5​​pwAC7PK0fQUQQ+PMhKw=="


谁能帮我解释一下为什么我的代码不起作用?

非常感谢各位。

【问题讨论】:

  • @RiggsFolly 我正在寻找另一个问题......它似乎完全不同。我现在无法通过查看发送给我的问题来回答。
  • 你读过关于OPENSSL_RAW_DATA的文章吗
  • @RiggsFolly 是的,它仍然无法正常工作!现在我得到的结果是正确的strlen,所以我觉得我更接近了。但还是不一样。我正在编辑改变它的问题!

标签: java php algorithm encryption cryptography


【解决方案1】:

已修复,问题在于 strtohex 为您提供了输入控制台的密码。

 public static function encryptAES($data, $AES_key)
    {
        $AES_key = base64_decode($AES_key);
        $encrypt = openssl_encrypt($data, 'aes128', $AES_key);
        if (!$encrypt) {
            throw new Exception('AES encryption error');
        }
        return base64_encode($encrypt);
    }

这是结果代码,它只是用 base64_decode 转换密钥。谢谢大家!

【讨论】:

    猜你喜欢
    • 2018-04-09
    • 2012-06-06
    • 1970-01-01
    • 2012-11-18
    • 2012-03-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多