用PHP替换JAVA进行PKCS5加密

2024-01-04

我的任务是用运行 PHP 的系统替换旧的 Java 系统。

我在用 PHP 代码替换 java 加密方面遇到了一些困难。

cipherAlgorythm = "PBEWithMD5AndDES";                           
cipherTransformation = "PBEWithMD5AndDES/CBC/PKCS5Padding";     
PBEParameterSpec ps = new javax.crypto.spec.PBEParameterSpec(salt, iterations);
SecretKeyFactory kf = SecretKeyFactory.getInstance(cipherAlgorythm);
SecretKey key = kf.generateSecret(new javax.crypto.spec.PBEKeySpec(password.toCharArray()));
Cipher encryptCipher = Cipher.getInstance(cipherTransformation);   
encryptCipher.init(Cipher.ENCRYPT_MODE, key, ps);
byte[] output = encryptCipher.doFinal("This is a test string".getBytes("UTF-8"));

看来是Java的胆子

在 PHP 中我正在做

$hashed_key = pbkdf2('md5', $this->key, $this->salt, $this->reps , <GUESS 1>, TRUE);
$output = mcrypt_encrypt(MCRYPT_DES, $hashed_key, "This is a test string", MCRYPT_MODE_CBC, <GUESS 2>);

pbkdf2 来自here. https://defuse.ca/php-pbkdf2.htm

So <GUESS 1>是密钥大小并且<GUESS 2>是IV。我已经尝试过这些但无济于事。有人对这样的价值观有建议吗?据我所知,加密本身应该是可移植的,但我不确定某些 Java 方法中发生了什么。

看起来java正在某处创建IV,但我不明白如何或在哪里。

RELATED

解密(使用 PHP)Java 加密(PBEWithMD5AndDES) https://stackoverflow.com/questions/10300185/decrypt-with-php-a-java-encryption-pbewithmd5anddes


您可能想看看https://www.php.net/manual/en/ref.mcrypt.php#69782 https://www.php.net/manual/en/ref.mcrypt.php#69782,但基本上他实现了一个 DIY 填充解决方案:

function pkcs5_pad ($text, $blocksize) 
{ 
    $pad = $blocksize - (strlen($text) % $blocksize); 
    return $text . str_repeat(chr($pad), $pad); 
} 

这可能是您最好的选择,但是如果您查看此评论,他关于如何验证每个步骤是否正确的建议可能对您有用。

https://stackoverflow.com/a/10201034/67566 https://stackoverflow.com/a/10201034/67566

理想情况下,您应该放弃 DES,并且由于这种填充在 PHP 中将成为一个问题,为什么不看看是否可以将加密算法更改为不那么麻烦且更安全的算法呢?

为了帮助您可以显示此页面:http://www.ietf.org/rfc/rfc4772.txt http://www.ietf.org/rfc/rfc4772.txt,其中简洁地表达了 DES 容易受到暴力攻击,因此已被弃用并被 AES 取代。

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

用PHP替换JAVA进行PKCS5加密 的相关文章

随机推荐

  • 我的 NDK 项目因 CPU 架构相关问题而无法编译

    有人可以解释一下为什么我会收到此错误吗 Build command failed Error while executing process C Users Kevin Desktop Android Sdk ndk bundle ndk
  • Dalvik的内存模型和Java的一样吗?

    Dalvik的内存模型和Java s http java sun com docs books jls third edition html memory html 17 4 我特别感兴趣的是是否读写参考和非long non double原
  • 在CALayer中添加UIImage

    我必须添加 UIImageView 作为 MapView 的子视图 为此 我在 MapView 上方创建了一个图层 在这一层中 我想放置我的图像 但我得到一个白色矩形 没有其他东西 我的图像不可见 这是代码 void viewDidLoad
  • 每当我创建新的 Rails 应用程序时,如何创建 Postgres 用户和数据库?

    我遵循了这个非常有用的教程 http blog willj net 2011 05 31 setting up postgresql for ruby on rails development on os x http blog willj
  • glewInit() 因“缺少 GL 版本”、SDL2 OpenGL 上下文、cygwin 编译器而失败

    下面的程序创建一个窗口 该窗口除了按 esc 关闭外不执行任何操作 当我用cygwin编译它时 没有错误 我使用的GLEW来自CYGWIN 端口 http cygwinports org SDL2 是版本 2 0 3 来自他们的websit
  • WPF 与 Unity 容器 - 如何注册 ViewModel 并将其解析为 View

    您好 我正在尝试在 WPF MVVM 应用程序中使用 Unity 容器 我没有使用过 Prism 因为它看起来很重 这是应用程序结构 我试图弄清楚如何将视图解析为视图模型以及视图模型 服务 的依赖关系 应用 Views MainWindow
  • 如何更改 UIDatePicker 色调颜色?

    我知道 UIDatePicker 无法自定义 但我想知道 iOS 14 提醒应用程序如何显示蓝色色调 而日历显示红色色调 我将 AppDelegate 中的全局色调设置为 label如下所示 但无法为日期选择器设置相同的值 UIView a
  • Debugdiag 显示“Microsoft VC 运行时堆”使用超过 1GB

    您好 我的 WPF 应用程序存在泄漏 我正在尝试使用内存转储文件来查找问题所在 使用 WinDbg 和 SOS 我找不到任何可疑的东西 然后我尝试了 DebugDiag 我得到了Microsoft VC 运行时堆 私有 有 1 42 GB
  • Dart DateTime.parse timeZoneOffset 始终为 0

    DateTime parse 创建的 DateTime 似乎总是为 timeZoneOffset 返回 0 我在非 UTC 时区中创建了一个 ISO8601 字符串 https timestampgenerator com 16100103
  • 如何使 say 命令回显脚本中的变量值?

    我使用的是 Mac 有时我会使用say命令位于我的脚本末尾 如下所示 system say Finished successfully 但如果我尝试插入一个变量 system say my variable 它不起作用 它仅回显变量名称 我
  • 使用 dllexport 从 DLL 导出函数

    我想要一个从 C Windows DLL 导出函数的简单示例 我想看看标题 cpp文件 以及 def文件 如果绝对需要 我希望导出的名称是未装饰的 我想使用最标准的调用约定 stdcall 我想要使 用 declspec dllexport
  • 如何通过单击按钮从“关于”返回到上一个活动?

    我试图通过单击按钮从 关于 对话框返回到主要活动 public class AboutActivity extends Activity implements OnClickListener Override protected void
  • 单个 MemoryCache 实例与多个 MemoryCache 实例

    MemoryCache 默认情况下带有默认缓存 并且可以创建其他命名缓存 似乎在不同实例中隔离不同进程的结果的缓存可能有优势 例如 针对索引的查询结果可以缓存在 IndexQueryResult 缓存中 而数据库查询的结果可以缓存在 Dat
  • 更改滑动选项卡布局中的颜色指示器

    我想问一下SlidingTablayout中的选项卡指示器的颜色是否可以更改 我必须使用developer android com 上的SlidingTabsColors 吗 我只想更改另一种颜色而不是默认的蓝色 我认为 请指教 谢谢 只是
  • SwiftUI 坐标空间

    有谁知道 SwiftUI 是如何在坐标空间上渲染的 看起来框架的原点现在不在0 0在左上角 例如添加一个Text使用修饰符会将标签偏移到视图之外 var body some View Text my long enough string p
  • 带有 WMS 和自定义投影的传单地图

    我已经使用 WMS 服务中的 Leaflet 和图块实现了地图 他们提供了一系列预测 其中一个可在标准传单 EPSG 4326 中使用 然而 地图看起来有点扭曲 我认为其他投影之一会更好 地图供应商使用 EPSG 32624 但我似乎无法获
  • 我如何使用 keras 创建 3d 输入/3d 输出卷积模型?

    我有一个小问题无法解决 我想使用完全连接的 MLP 来实现 CNN 模型到我的蛋白质数据库 该数据库有 2589 个蛋白质 每个蛋白质有 1287 行和 69 列作为输入 1287 行和 8 列作为输出 实际上有 1287x1 输出 但我对
  • Jacoco 和 Sonar 代码覆盖率?

    Using JaCoCo 0 5 3 Maven2 声纳 2 14 声纳 maven 插件 1 8 S artGWT 3 0 目前正在尝试 在 Sonar 上获取我的 Selenium 单元测试的代码覆盖率 问题 尽管传感器正确启动 代码覆
  • 使用 pyinstaller 制作的 exe 文件被 Windows Defender 报告为病毒威胁

    我正在尝试使用 pyinstaller 为学校项目创建一个 exe 但是 Windows Defender 似乎报告病毒威胁并阻止该文件 我想将此 exe 发送给其他人 但除非我修复此问题 否则我无法做到这一点 所以这些是我的疑问 为什么e
  • 用PHP替换JAVA进行PKCS5加密

    我的任务是用运行 PHP 的系统替换旧的 Java 系统 我在用 PHP 代码替换 java 加密方面遇到了一些困难 cipherAlgorythm PBEWithMD5AndDES cipherTransformation PBEWith