Php 从 C# .NET RIJNDAEL 解密字符串 256

2023-11-23

修复。

$data = base64_decode(str_replace(' ', '+', $_GET['data']));

无论出于何种原因,Php 将 GET 变量中的 + 转换为空格

--

我正在尝试解密正在 C#.NET 中解密的字符串。

代码的结果各不相同,有几次最终字符串的某些部分被解密,其余部分是随机字符。

大多数时候“解密”的字符串都是随机字符,我也尝试了一些 Php 函数来删除 PKCS7 填充,但没有一个解决问题。

我在网站上查看了几个类似的问题,但没有一个有帮助。

C#

// called as Response.Redirect(url + encryptParams(param));

private string encryptData(string data)
{
    Rijndael aes = Rijndael.Create();
    aes.KeySize = 256;
    aes.BlockSize = 256;
    aes.Mode = CipherMode.CBC;
    aes.Padding = PaddingMode.PKCS7;
    aes.Key = Convert.FromBase64String("b0dJN2c6cklVUX1qUGlFfGMweXRKbH5fSEMuXjAgfQo=");

    ICryptoTransform crypto = aes.CreateEncryptor(aes.Key, aes.IV);
    byte[] txt = ASCIIEncoding.UTF8.GetBytes(data);          
    byte[] cipherText = crypto.TransformFinalBlock(txt, 0, txt.Length);

    return "&data=" + Convert.ToBase64String(cipherText) + "&iv=" + Convert.ToBase64String(aes.IV);
}

Php:

   $data = base64_decode($_GET['data']);
   $iv = base64_decode($_GET['iv']);

   echo "<br /><b>IV</b>: " . $_GET['iv'] .
       "<br /><b>Encrypted String</b>: <br /><textarea>".$_GET['data']."</textarea>" .
       "<br /><b>key size:</b> " . mcrypt_get_key_size ( MCRYPT_RIJNDAEL_256,  MCRYPT_MODE_CBC) .
       "<br /><b>block size:</b> " . mcrypt_get_block_size ( MCRYPT_RIJNDAEL_256,  MCRYPT_MODE_CBC) .
       "<br /><b>cipher:</b> " . mcrypt_get_cipher_name ( MCRYPT_RIJNDAEL_256 ) .
       "<br /><b>iv size:</b> " .  mcrypt_get_iv_size  ( MCRYPT_RIJNDAEL_256, MCRYPT_MODE_CBC) . "<br />"; 

   echo "Result: " . 
      mcrypt_decrypt
      (
          MCRYPT_RIJNDAEL_256,
          base64_decode("b0dJN2c6cklVUX1qUGlFfGMweXRKbH5fSEMuXjAgfQo="),
          $data,
          MCRYPT_MODE_CBC,
          $iv
       );

PHP 输出:

IV:WzsMlG39tfCGuX2EQM3vq8CoqGA xC0nW jICls8Cno=
key:b0dJN2c6cklVUX1qUGlFfGMweXRKbH5fSEMuXjAgfQo =

加密字符串:olxa21fxfQGg0EJ5rwMjEzMblvcaTq0AInDASD88wAkNeLqOdon0ukLjz49Hpp36KPTKcTGkj1f7EPYPAAbuADnr3Ff0zpptZkx2d22VRbHrMgj QLF9vDxQRT3er3UAXsAfKKTyW8qeSIgrzACFLX 3yoro/bzWic rt7ED7y0jZ7a1Hci3GMz/4KhwaftarbV QQWStJlSOqdxAdmtRRe84Vi3085S6um51bNrh5QzGRH PcpucfqaTb3junfO9g67j2JUQaM/Tj1EGnv6oX3waTR/LuWyhnhrCH86u10I=

钥匙尺寸: 32
块大小: 32
cipher:Rijndael-256
iv size: 32
Result:/ci�����^/�c�g�������s��c�(��

原始字符串(JSON):{“用户”:“jsmith”,“名字”:“约翰”,“姓氏”:“史密斯”,“电话”:“12223334444.5555”,“电子邮件”:“[电子邮件受保护]","address":"123 Some Street","address2":"apt 456","city":"Some City","state":"LA","zip":"55555"}


使用以下代码修复了它。

$data = base64_decode(str_replace(' ', '+', $_GET['data']));

无论出于何种原因,PHP 将 GET 变量中的 + 转换为空格。

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

Php 从 C# .NET RIJNDAEL 解密字符串 256 的相关文章

  • 如何在 C++ 中对静态缓冲区执行字符串格式化?

    我正在处理一段对性能要求非常高的代码 我需要执行一些格式化的字符串操作 但我试图避免内存分配 甚至是内部库的内存分配 在过去 我会做类似以下的事情 假设是 C 11 constexpr int BUFFER SIZE 200 char bu
  • 从字符串中删除第一个和最后一个字符

    我有这个 dataList one two three list explode dataList echo pre print r list echo pre 其输出 gt Array gt 0 gt gt 1 gt one gt 2 g
  • 以标准用户身份打开默认浏览器 (C++)

    我目前正在使用 ShellExecute 打开 在用户浏览器中打开 URL 但在 Win7 和 Vista 中遇到了一些麻烦 因为该程序作为服务运行提升 当 ShellExecute 打开浏览器时 它似乎读取 本地管理员 配置文件而不是用户
  • 如何在 php 中为每个其他函数调用自动调用函数

    Class test function test1 echo inside test1 function test2 echo test2 function test3 echo test3 obj new test obj gt test
  • 枚举器上的 [[maybe_unused]]

    查看规格 maybe unused http en cppreference com w cpp language attributes 它指出 出现在类 typedef 变量 非静态数据成员 函数 枚举或枚举器的声明中 如果编译器对未使用
  • 使用mysql数据按高低价格排序

    这是我所拥有的以及我想做的 我的 MySql 数据库中有 12 个项目 4 个产品为 4 99 4 个产品为 3 99 4 个产品为 2 99 我意识到我可以像这样查询数据库 它会给我一个该价格的产品列表
  • 在 ncurses 中使用退格键

    我设置了一个简单的 ncurses 程序 它使用 getch 一次读取一个字符并将它们复制到缓冲区中 我遇到的问题是检测到按下退格键 这是相关代码 while buffer i c getch EOF i if c n break else
  • 简单的文档管理系统和API [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • 如何将事件插入为 - Out Office

    我目前正在使用 Google Calendar API 并尝试在我的谷歌日历中插入新的 外出 事件 我使用以下代码插入事件 client getClient service new Google Service Calendar clien
  • 在 Woocommerce 的单个产品页面上显示特定的自定义产品属性

    我找到了以下代码 https isabelcastillo com woocommerce product attributes functions在产品详细信息页面上显示所有自定义属性 具有我需要的特定条形设计 代码的工作方式就像一个魅力
  • .Net Core 中的脚手架以及解决方案中的多个项目

    我创建了一个针对 net461 的 Net Core MVC6 应用程序 我使用了一个我非常熟悉的项目结构 其中我将数据 模型和服务类放置在单独的类库项目中 并且 Web 项目引用这些项目 当我尝试搭建控制器时 我收到一条错误 指出我正在搭
  • Laravel中with()和compact()有什么区别

    功能有什么区别with and compact 在 Laravel 中这两个例子 示例1 return View make books index gt with booksList booksList 示例2 return View ma
  • 使用互斥锁来阻止临界区外部的执行

    我不确定我的术语是否正确 但这里是 我有一个由多个线程使用的函数来写入数据 在注释中使用伪代码来说明我想要的内容 these are initiated in the constructor int data std atomic
  • Active Directory UserPrincipal.Current.GetGroups() 返回本地组而不是 Web 服务器上的组

    以下内容在我的本地开发盒上效果很好 但是 当我将其移动到网络服务器时 它失败了 甚至不会记录错误 public static List
  • 无法下载 Windows 版 Composer SSL:握手超时

    这是我尝试安装 Windows 版 Composer 时得到的结果 The https getcomposer org versions https getcomposer org versions 无法下载文件 SSL 握手超时 无法启用
  • 如何分析 VSCode 中函数的性能

    我用 C Golang 编写了一个程序 如何找到占用最高 CPU 周期的函数 目的是提高正在执行的程序的性能 2021 年 10 月 金香儿哈娜 https github com hyangah宣布 tweet https twitter
  • 使用 roslyn 扩展 C# 语法

    我试图在没有 else 情况的情况下实现 return if return value if 因为我只想在条件有效时返回或返回一个值 我知道 有if condition return or if condition return value
  • 在类中使用 std::chrono::high_resolution_clock 播种 std::mt19937 的正确方法是什么?

    首先 大家好 这是我在这里提出的第一个问题 所以我希望我没有搞砸 在写这篇文章之前我用谷歌搜索了很多 我对编码 C 很陌生 我正在自学 考虑到有人告诉我 只为任何随机引擎播种一次是一个很好的做法 我在这里可能是错的 什么是正确 最佳 更有效
  • 多个数据库连接

    我有三张桌子 categories content info and content The categories表包含类别的id及其 IDparent类别 The content info包含两列 entry id帖子的 ID 和cat
  • Symfony2 dev环境可以工作,prod环境给出404错误

    我最近在我的机器上成功安装了 Symfony2 我可以访问http localhost app dev php 开发环境 但是 当我尝试访问 prod 环境时 http localhost app php 我在浏览器中收到以下错误消息 哎呀

随机推荐

  • Jquery 移动粘性页脚

    我想要 Jquery Mobile 中的页脚 它不是固定的 但始终位于页面底部 像这样 http ryanfait com sticky footer 但在 JQuery Mobile 中 不像标准的 JQuery Mobile 固定页脚
  • 如何捕获滚动事件?

    我想实现无限滚动 下面是我的布局的简短形式 由于我有一些元素相对定位 因此 javascript 滚动事件不会触发 如何解决这个问题以便触发滚动事件并实现无限滚动 我的主要布局是 div div class wrapper div div
  • 如何获取站点的物理路径属性

    当我仅列出具有默认格式的站点时 它会显示物理路径 PS C Windows system32 gt sm Get IISServerManager PS C Windows system32 gt sm Sites Name ID Stat
  • 如何获取 WebKit 中所有受支持的 CSS 属性?

    在 Firefox Opera 和 IE 中我可以通过以下方式获取它们 gt gt for k in document body style console log k gt opacity background height textAl
  • 禁用列表视图的滚动并启用整个布局

    您好 我目前正在开发一个 Android 应用程序 它在主活动中有两个列表视图 我想要的是禁用两个列表的滚动并仅允许整个页面滚动 有什么方法可以帮助 我的代码 包com example listviewdemo import android
  • 禁用 Rails 中的资源预编译功能

    我想禁用 Rails 中的资产预编译功能 我正在开发用户可以下载代码的应用程序 我想避免更改下载的 html 文件中的 css 和 js 文件的名称 以便用户可以运行 index html 并查看所有内容 这是该应用程序 http impr
  • 在 Eclipse-CDT 中使用*相对*路径引用第 3 方库

    使用以下方式引用第 3 方 C 组件 例如包含 库 的最佳实践是什么relativeEclipse CDT 中的路径 我正在尝试参考 Boost 和 Google protobuf 我已将它们分别放在工作区的一个文件夹中 例如 home 用
  • 以编程方式设置按钮的边距

    我是 android 新手 陷入了一个非常基本的问题 我正在开发一个应用程序 其中我需要在 fling 上滑动图像 在每个图像上 我必须动态添加按钮 我正在使用 AddContentView 添加按钮来添加按钮一切工作正常 但我想动态设置按
  • 从客户端取消通过 WCF 长时间运行的任务

    我将 WCF 服务设置为 PerCall 我想知道如何从客户端发送 Start 调用来启动长时间运行的进程 并发送 Cancel 命令来取消它 我的 WCF 服务看起来像这样 ServiceBehavior InstanceContextM
  • KeyError 中错误消息的新行 - Python 3.3

    我通过 IDLE 使用 Python 3 3 运行如下代码时 raise KeyError This is a n Line break 它输出 Traceback most recent call last File test py li
  • LNK1117:选项“VERSION:1.0.0”中的语法错误[重复]

    这个问题在这里已经有答案了 当我尝试构建时 我有一个非常好奇的问题Visual Studio 2013 有人可以帮助我吗 我做错了什么 原始消息 德语 1 gt Erstellen gestartet Projekt npworpg Kon
  • Scala 类型:A 类不等于 T,其中 T 为:类型 T = A

    我正在阅读 Scala 编程 一书的第 20 7 节 我想知道为什么这段代码编译时 class Food class Fish extends Food class Grass extends Food abstract class Ani
  • Logback - 启动时不创建空日志文件

    我有一个项目 其中有很多 工具 类 它们有自己的日志记录 这些日志文件是在应用程序启动时创建的 但在使用之前保持为空 是否可以告诉 logback 在启动时不应创建空文件 但只有当它们被使用时 不知何故 我找不到有关此主题的信息 谢谢 Lo
  • Xamarin.Forms - 将 CollectionView 的高度调整为适合儿童的最小尺寸

    I have a CollectionView with a few items in it I m trying to adjust the size of the CollectionView to be just big enough
  • 如何使用Python读取MS-Word文件中表格的内容?

    如何读取和处理 DOCX 文件中表格的每个单元格的内容 我在 Windows 7 和 PyWin32 上使用 Python 3 2 来访问 MS Word 文档 我是初学者 所以我不知道到达表格单元格的正确方法 到目前为止我刚刚这样做了 i
  • 如何在Android中检查特定设备是否支持4G网络?

    我想检查一下是否特定设备具有对 4G 网络的硬件支持 我将详细说明这个问题 在应用程序中 我们有一个设置页面 用户可以在其中进行选择并允许应用程序仅在选定的网络中运行 例如 用户可以选择该应用程序仅在 WiFi 网络或仅在 3G 网络等中运
  • webapi2 返回不带引号的简单字符串

    简单场景 public IHttpActionResult Get return Ok
  • ClosureCleaner.clean的目的

    Before sc runJob调用dagScheduler runJob 对 rdd 执行的 func 被 清理 为ClosureCleaner clean 为什么 Spark 必须这样做 目的是什么 Ankur Dave 一位 Spar
  • docker-compose + django + redis - 连接到 127.0.0.1:6379 时出现错误 111。连接被拒绝

    我已经看过了这个答案并且不知道如何将其应用于我的问题 所以如果答案存在 我们将不胜感激 我也是 docker 和 docker compose 的菜鸟 我有一个简单的 docker compose yml version 3 service
  • Php 从 C# .NET RIJNDAEL 解密字符串 256

    修复 data base64 decode str replace GET data 无论出于何种原因 Php 将 GET 变量中的 转换为空格 我正在尝试解密正在 C NET 中解密的字符串 代码的结果各不相同 有几次最终字符串的某些部分