javascript - 使用 AES-128-ECB 方法在 Java 中加密并在 PHP 中解密
问题描述
我对 JS 和 PHP 还很陌生,如果我问的内容太基本,我很抱歉。
我正在尝试通过表单中的 POST 方法发送加密数据。我需要加密 JS 中的数据,因为它会在用户需要时动态变化。然后我将在使用 POST 后使用 openssl_decrypt。我试过但没有成功。我做错了什么(我真的不知道我在做什么......)因为 JS 和 PHP 结果不匹配。总结一下,这就是我想要的:
<!DOCTYPE html>
<html>
<body>
<!-- Here I use the crypto package -->
<script src="https://cdnjs.cloudflare.com/ajax/libs/crypto-js/3.1.9-1/crypto-js.js"></script>
<!-- Here I use the crypto package -->
<?php
define("stringToEncode", "2");
define("KEY", "123456789");
define("COD", "AES-128-ECB");
echo "Encryption result with PHP: ".openssl_encrypt("2", COD, KEY);
?>
<div>Encryption result with JS: <label id='demo'></label>.</div>
<script>
encryptedAES=CryptoJS.AES.encrypt(<?php echo '"'.stringToEncode.'"' ?>,<?php echo '"'.KEY.'"' ?>);
plainText=encryptedAES.toString();
document.getElementById("demo").innerHTML=plainText;
</script>
</body>
</html>
有人想出点什么吗?提前致谢。
编辑:
从这个问题CryptoJS AES-128-ECB and PHP openssl_encrypt don't match 中获取脚本,我也得到了完全相同的 PHP 和 JS 加密结果。有趣的一点是,它仅在 KEY 有 16 个字母、数字或字母数字字符串(没有 ñ 或 ç 等特殊字符)时才有效。我已经警告过我不是专家,所以我不知道发生了什么。如果有人想找到解释,我在这里留下一个工作示例:
<!DOCTYPE html>
<html>
<body>
<!-- Here I use the crypto package -->
<script src="https://cdnjs.cloudflare.com/ajax/libs/crypto-js/3.1.9-1/crypto-js.js"></script>
<!-- Here I use the crypto package -->
<?php
define("stringToEncode", "2");
define("COD", "AES-128-ECB");
define("KEY", "429885118246456Y");
echo "Encryption result with PHP: ".openssl_encrypt(stringToEncode, COD, KEY);
?>
<div>Encryption result with JS: <label id="demo"></label>.</div>
<script>
const key = <?php echo "'".KEY."'" ?>;
let k = CryptoJS.enc.Utf8.parse(key);
encryptedAES = CryptoJS.AES.encrypt(<?php echo "'".stringToEncode."'" ?>, k, {mode: CryptoJS.mode.ECB});
plainText=encryptedAES.toString();
document.getElementById("demo").innerHTML=plainText;
</script>
</body>
</html>
解决方案
推荐阅读
- r - 为什么相同的 Google 搜索 API 在 R 和浏览器中产生不同的结果
- php - 会话开始后仍然显示登录页面
- python - 同一个csv中的多个工作表
- php - 类 App\Http\Request\CreatePost 不存在
- mysql - Angular 7:更新和删除功能不起作用
- office-js - 寻找“Outlook 加载项的保存功能”
- python - 如何改进我的代码以使其运行得更快?
- javascript - 如何设置我的文本在 3 秒后出现的超时时间?
- javascript - Angular8 和全日历组件
- ruby-on-rails - 是否有任何探索使用 Web 组件的 RoR 项目?