Java和PHP AES加密解密如何实现互通?

霞舞
发布: 2025-02-26 20:24:01
原创
253人浏览过

java和php aes加密解密如何实现互通?

Java和PHP AES加密解密互通详解

本文阐述Java与PHP平台间利用AES算法实现数据加密解密互通的方案。Java端采用AES/CBC/PKCS5Padding加密模式,密钥长度128位,并使用SHA1PRNG处理密钥。我们将演示如何使用PHP的OpenSSL库实现与Java端兼容的AES加密和解密。

Java代码中,DefaultKeyService类负责AES密钥生成、加密和解密。核心代码片段如下:

@SneakyThrows
public byte[] aesEncrypt(byte[] key, byte[] plaintext) {
    SecureRandom secureRandom = SecureRandom.getInstance(SECURE_RANDOM_ALGORITHM);
    secureRandom.setSeed(key);
    KeyGenerator kgen = KeyGenerator.getInstance(AES);
    kgen.init(AES_KEY_LENGTH, secureRandom);

    SecretKeySpec secretKeySpec = new SecretKeySpec(kgen.generateKey().getEncoded(), AES);

    Cipher cipher = Cipher.getInstance(AES_TRANSFORMATION);
    IvParameterSpec iv = new IvParameterSpec(key); // 密钥用作IV
    cipher.init(Cipher.ENCRYPT_MODE, secretKeySpec, iv);

    return cipher.doFinal(plaintext);
}

@SneakyThrows
public byte[] aesDecrypt(byte[] key, byte[] ciphertext) {
    // ... (解密代码与加密代码类似,Cipher.init模式不同) ...
}
登录后复制

关键点:Java代码使用密钥本身作为初始化向量(IV)。PHP代码必须与之匹配。

PHP端实现:为了与Java端的AES/CBC/PKCS5Padding模式兼容,我们使用OpenSSL的openssl_encrypt和openssl_decrypt函数。PHP函数示例:

立即学习PHP免费学习笔记(深入)”;

<?php
function phpAesEncrypt($key, $plaintext) {
    $iv = $key; // 密钥用作IV,与Java端一致
    return openssl_encrypt($plaintext, 'aes-128-cbc', $key, 0, $iv);
}

function phpAesDecrypt($key, $ciphertext) {
    $iv = $key; // 密钥用作IV,与Java端一致
    return openssl_decrypt($ciphertext, 'aes-128-cbc', $key, 0, $iv);
}
?>
登录后复制

PHP代码中aes-128-cbc对应Java端的AES/CBC/PKCS5Padding。同样关键的是,PHP代码也使用密钥作为IV,确保与Java代码一致性,从而实现加密和解密的成功。 密钥需以相同方式在Java和PHP之间传输和使用。 注意:直接使用密钥作为IV并非最佳安全实践,生产环境应使用随机生成的IV并与密文一起存储和传输。

通过以上Java和PHP代码的配合,即可实现Java加密的数据在PHP端解密,以及PHP加密的数据在Java端解密。 务必妥善保管密钥,确保其安全性。

以上就是Java和PHP AES加密解密如何实现互通?的详细内容,更多请关注php中文网其它相关文章!

PHP速学教程(入门到精通)
PHP速学教程(入门到精通)

PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载
相关标签:
来源:php中文网
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
开源免费商场系统广告
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号