Java加密AES,PHP解密AES

2024-04-12

我正在寻找一种在 Java 中加密字符串并在 PHP 中解密的方法。我发现this http://www.logikdev.com/2010/11/01/encrypt-with-php-decrypt-with-java/在 Stackoverflow 上的某个答案中,我修改了它以执行完全相反的操作。 这是我用 Java 加密的代码:

public static String encrypt(String data, String initialVectorString, String secretKey) {
        String encryptedData = null;
        try {
            SecretKeySpec skeySpec = new SecretKeySpec(md5(secretKey).substring(0, 16).getBytes(), "AES");
            IvParameterSpec initialVector = new IvParameterSpec(initialVectorString.getBytes());
            Cipher cipher = Cipher.getInstance("AES/CFB8/NoPadding");
            cipher.init(Cipher.ENCRYPT_MODE, skeySpec, initialVector);
            byte[] encrypted = cipher.doFinal(data.getBytes());
            byte[] base64encrypted = (new org.apache.commons.codec.binary.Base64()).encode(encrypted);
            encryptedData = new String(base64encrypted, "UTF-8");
        } catch (Exception e) {
            e.printStackTrace();
        }
        return encryptedData;
    }

这是我用 PHP 解密的代码:

function decrypt($message, $initialVector, $secretKey) {
        return (
        mcrypt_decrypt( 
        MCRYPT_RIJNDAEL_128,
        substr(md5($secretKey), 0, 16),
        base64_decode($message),  
        MCRYPT_MODE_CFB,
        $initialVector
        )
        );
    }

密钥和初始向量每次都会改变。 该代码在 90% 的情况下都有效,但有时它只能部分解密字符串,其余字符不可读,如下所示:Microsoft Windows [Version 10.0.1��×应该说Microsoft Windows [Version 10.0.14393]。我修改代码有什么错误吗?

编辑:我可能需要添加使用上面链接中的代码在 Java 中解密确实有效。

EDIT2:找到答案,这是一个愚蠢的错误,PHP 将 Base64 加密字符串中的 + 作为空格。感谢您的所有帮助,我仍然会使用它。


None

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Java加密AES,PHP解密AES 的相关文章

随机推荐

  • Ruby 中的每个自动计数器?

    我想使用 for each 和计数器 i 0 for blah in blahs puts i to s blah i 1 end 有更好的方法吗 Note 我不知道是否blahs是一个数组或一个散列 但必须这样做blahs i 不会让它变
  • 如何让eclipse记住ssh密钥密码?

    我将 Egit 与 Eclipse 结合使用来使用 git 并访问 github 一切工作正常 但我想省略一件事id rsa每次我将提交推送到 github 时都需要输入密钥密码 每次重新启动 Eclipse 并尝试推送时 都会要求我输入密
  • 对齐CSS中旋转的元素

    我尝试旋转页面上的 div 并将其靠在其父元素 在本例中为主体 的左侧 我了解变换原点 但无论我插入什么值 它都无法正确对齐 http jsfiddle net QpHCM http jsfiddle net QpHCM HTML div
  • JSDOC:如何记录函数的内部变量

    有没有办法让 JSDOC 显示函数内部的变量而不使用 命名空间函数前面的注释 我做了一个小测试对象 但它只会显示内部变量k对于最后一个函数 它被声明为命名空间 我想使用 成员 注释和精确 name注释将在下面调用的第二个方法中显示内部变量d
  • 链接网页、Facebook Like 按钮和 Facebook 粉丝页面?

    这可能吗 当有人点击 Facebook Like 按钮时 他 她会与 Facebook 上的朋友分享网页 URL 通过同样的点击 用户也成为该网站 Facebook 粉丝页面的粉丝 Thanks 虽然可以在您的网站上添加喜欢按钮来喜欢您的
  • 在 postgresql 中编写我自己的聚合函数

    我从来没有写过自己的聚合 只写过存储过程 我需要一些建议 我想编写一个自定义聚合 它将返回整数行的最大值并将其增加 10 我该怎么做 我试过这个 CREATE AGGREGATE incremented max v SFUNC max ST
  • 扩展 C# 语言?

    基本上我想知道的是是否有任何方法可以向基于 net 的语言添加新的 语句 我正在寻找的一个例子是类似介绍public class MyClass decoratorOf ClassWithLotsOfMethods并在预编译时将其更改为普通
  • removeAttribute() 不适用于 DOM

    为什么不removeAttribute 删除以下代码中的任何内容 div Element with style div br br
  • Git克隆无法创建文件

    尝试克隆远程 git 存储库 裸 时 我收到如下几个错误 之后 git 停止 error unable to create file frozen email lamson mymailserver run queue mark name
  • Lasso 和 RobustScaler 之后如何对回归预测进行逆变换?

    我试图弄清楚如何在使用 RobustScalar 和 Lasso 后取消缩放数据 大概使用 inverse transform 进行预测 下面的数据只是一个例子 我的实际数据更大 更复杂 但我希望使用 RobustScaler 因为我的数据
  • React router v4 - 在同一路由上渲染两个组件

    我有这些路线
  • 带有一个图标的 ShareActionProvider - 看起来就像一个简单的操作项

    我要显示ShareActionProvider on ActionBar 但具有自定义外观和感觉 只有一个简单的共享图标 没有边框 右侧没有最常用的应用程序图标 但提供弹出菜单与最常用的应用程序 有没有一种简单的方法可以做到这一点而无需实现
  • islice 一次读取 N 行的问题

    我正在尝试使用 from itertools import islice 以便使用 liblas 模块一次从 las 文件中读取多行 我的目标是逐块阅读 按照问题 Python如何一次读取N行 https stackoverflow com
  • 如何旋转 SCNBox

    我正在尝试旋转SCNBox我创建使用swipe gestures 例如 当我向右滑动时 该框应旋转 90 度Y axis当我向左滑动时为 90degs 为了实现这一点 我一直在使用节点的SCNAction rotateByX方法来执行旋转动
  • Java中如何预加载类? [复制]

    这个问题在这里已经有答案了 在我的 Swing 界面中首次打开新的 JInternalFrame 需要一些时间 根据探查器 大部分时间都花在 Classloader loadClass 方法上 据我所知 它会在需要时动态加载类 并且实际上
  • 如何创建播放列表

    我正在尝试创建一个仅提供编辑文本和图像按钮的应用程序 如果单击按钮 则会将专辑添加到播放列表中 并在编辑文本框中命名 专辑应随机选择 不用说 专辑曲目应该按正确的顺序排列 我可以稍后添加更多功能 例如 保存 覆盖 删除等 我有界面 但正在努
  • Magento 1.9 注册后重定向客户

    我想在 Magento 1 9 中成功注册后将所有客户重定向到自定义页面 我已经尝试了很多事情 首先 我成功地覆盖了核心客户帐户控制器 我尝试自定义以下操作 创建后动作 successProcessRegistration welcome客
  • 在 C# 中实现动态 Web Scraper 的逻辑

    我希望在 C 窗口窗体中开发一个 Web scraper 我想要完成的任务如下 从用户处获取 URL 在WINForms中的IE UI控件 嵌入式浏览器 中加载网页 允许用户选择文本 连续 小 不超过 50 个字符 从加载的网页 当用户希望
  • 第三个克隆海龟

    我在尝试制作追逐游戏时制作了这个程序 但我偶然发现了一些非常奇怪的东西 我创建了海龟的克隆体 但在地图中间出现了第三个 有谁知道是什么原因造成的 import turtle sc turtle Screen t turtle Turtle
  • Java加密AES,PHP解密AES

    我正在寻找一种在 Java 中加密字符串并在 PHP 中解密的方法 我发现this http www logikdev com 2010 11 01 encrypt with php decrypt with java 在 Stackove