如何在 JavaScript 中加密字符串并在 C# 中解密该字符串

2024-02-28

我以前见过这个问题,尽管在这些情况下,发帖者想要加密面向公众的网站上的某些内容(通常是网址),而答复大多是“不!”。然而,就我而言,JavaScript 将存储在非公共内部系统中,所以我认为我有更多的余地。类似问题的一个例子是:如何在javascript中加密url并在c#中解密 https://stackoverflow.com/questions/4614542/how-to-encrypt-url-in-javascript-and-decrypt-in-c- 答案实际上并没有回答问题。

我的“JavaScript”实际上是“SuiteScript”,它被定义为“SuiteScript 是一个基于 JavaScript 的 API,使开发人员能够扩展 NetSuite”,其中 NetSuite 是一个托管 CRM 包,因此用于加密我的字符串的任何编码都将是对每个人都隐藏,除了我公司的员工(因此被认为是安全隐藏的)。

我想做的是:

  1. 生成查询字符串(例如 userid=guidValue&firstName=stringValue&company=stringValue&...),
  2. 使用安全方法加密(例如 AES256、RSA,任何人认为安全的方法),
  3. 调用基于 C# 的网站上的网页,并在 URL 中传递此字符串(例如 mysite.com/mypage.aspx?encStr=encryptedString)
  4. 让 C# 页面解密它,分离名称/值对并处理它们。

我已经用谷歌搜索并搜索了 stackoverflow,但没有找到任何文章或答案提供可以由这两种技术使用的加密方法的明确说明。有人有这样的指示吗?


对称

最简单的方法是使用库作为斯坦福大学 Javascript 加密库 http://crypto.stanford.edu/sjcl/实现标准(在本例中为 AES)并在 C# 中使用相同的密码(通过AesManaged http://msdn.microsoft.com/en-us/library/system.security.cryptography.aesmanaged%28v=VS.100%29.aspx or AesCryptoServiceProvider http://msdn.microsoft.com/en-us/library/system.security.cryptography.aescryptoserviceprovider%28v=VS.100%29.aspx).

您将得到一个对称密码,但几乎只需设置一个参数(密钥)即可使两个库正常工作。

不对称

您也可以使用非对称(公钥)密码。掌握 JavaScript 代码的攻击者将能够向您的服务器发送精心设计的请求,但无法拦截其他请求。

有一个实现JavaScript 中的 RSA http://www.ohdave.com/rsa/RSACryptoServiceProvider http://msdn.microsoft.com/en-us/library/system.security.cryptography.rsacryptoserviceprovider%28v=VS.90%29.aspx类提供.Net中的支持

A 完整的示例可在代码项目中找到 http://www.codeproject.com/KB/aspnet/rasinterop.aspx在 javascript lib 中包含 RSA 的路径以支持填充(使用 .Net 实现时必须这样做)

Note

这两种解决方案本身都容易受到重播的影响(攻击者拦截字符串并稍后(可能多次)将其发送回服务器)

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

如何在 JavaScript 中加密字符串并在 C# 中解密该字符串 的相关文章

  • 从网站存储数据的最简单方法(在服务器端)

    我有一个非常简单的网站 实际上是单页 有一个输入字段和一个按钮 我需要将用户提交的数据存储在服务器端的某个位置 完美的方法可能是简单的文本文件 并在每次单击按钮后附加新行 日志文件也可以 据我了解 JavaScript 本身是不可能的 我在
  • 不要声明只读可变引用类型 - 为什么不呢?

    我一直在阅读这个问题 https stackoverflow com questions 2274412 immutable readonly reference types fxcop violation do not declare r
  • 获得一次性绑定以适用于 ng-if

    这个问题已经被之前问过 https stackoverflow com questions 23969926 angular lazy one time binding for expressions 但我无法让该解决方案发挥作用 所以我想
  • 更改其他页面的主窗口内容

    在 WPF 应用程序的主窗口中 我有一个 Badged 元素 来自材料设计 这是我的代码
  • 是什么原因导致 Linq 错误:此方法无法转换为存储表达式?

    我有一堆具有相同 select 语句的 Linq to Entity 方法 所以我想我会很聪明 并将其分离到它自己的方法中以减少冗余 但是当我尝试运行代码时 我得到了以下内容错误 该方法不能转化为 商店表达式 这是我创建的方法 public
  • PhantomJS 网页内存消耗?

    是否有一种编程方式 因为我想在运行时自动执行 方式来查看网页在通过 PhantomJs 运行时使用了多少内存 我也在使用 casperjs 如果这有帮助的话 我已经搜索了很多但没有找到任何方法 PhantomJs 使用 QtWebKit 因
  • 如何在 VS Code 中为 CMake 项目设置 C/C++ IntelliSense?

    我正在尝试使用 libTooling 编写一个工具 我对其进行了设置 以便它可以使用 LLVM 文档中的示例进行编译 然而 C C IntelliSense 似乎不适用于 CMake 项目 我的工具位于
  • 如何在 JavaScript 中对关联数组进行排序?

    我需要为我的一个项目通过 JS 对关联数组进行排序 我发现这个函数在 Firefox 中运行得很好 但不幸的是它在 IE8 OPERA CHROME 中不起作用 无法找到使其在其他浏览器中运行的方法 或者找到另一个适合该目的的函数 我真的很
  • Javascript:更改输入值时设置光标位置

    当您输入公式时 我试图在我的应用程序中重现类似于 Microsoft Excel Google Sheets 的用户体验 并且您可以使用不同的公式和变量来自动完成下拉菜单 为此 在验证自动完成功能后 我希望能够控制光标的位置 例如 如果我输
  • 理解 C++11 中的 std::atomic::compare_exchange_weak()

    bool compare exchange weak T expected T val compare exchange weak 是 C 11 中提供的比较交换原语之一 它是weak即使对象的值等于 它也会返回 falseexpected
  • C++ 标准中短语“构造函数没有名称”的含义

    在尝试理解 C 标准中的 构造函数没有名称 这句话时 我似乎在 clang 中发现了一个错误 有人可以证实这一点吗 VS2015 and gcc rejects this code and I think they it are is co
  • 跨浏览器:禁用输入字段的不同行为(文本可以/不能复制)

    我有一个被禁用的输入 html 字段 在某些浏览器 Chrome Edge Internet Explorer 和 Opera 中可以选择并复制文本 但至少在 Firefox 中这是不可能的 您可以通过在不同浏览器中执行以下代码来测试
  • 展开路径中具有环境变量的文件名

    最好的扩张方式是什么 MyPath filename txt to home user filename txt or MyPath filename txt to c Documents and settings user filenam
  • 微软语音识别速度

    我正在使用微软的语音识别器开发一个小型练习应用程序 对于我正在做的事情来说 我似乎无法让它足够快地识别单个单词 我希望能够正常说话 系统将从我所说的内容中抓取 关键字 并生成一个字符串 目前我正在使用 5 个单词的自定义语法 红 蓝 黄 绿
  • 为什么 C# 接口名称前面加上“I”

    这种命名约定背后的基本原理是什么 我没有看到任何好处 额外的前缀只会污染 API 我的想法与康拉德一致response https stackoverflow com a 222502 9898与此相关的question https sta
  • 如何强制执行特定的 UserControl 设计

    我正在编写一个基本用户控件 它将由一堆其他用户控件继承 我需要对所有这些后代控件强制执行某种设计 例如 顶部必须有几个按钮以及一个或两个标签 后代用户控件区域的其余部分可以自由放置任何内容 最初 我认为我可以将一个面板放到 Base Use
  • 正在获取“未终止 [] 设置”。 C# 中的错误

    我正在 C 中使用以下正则表达式 Regex find new Regex url
  • 如何设置 Firebase 用户的显示名称?

    根据Firebase网站上的JS Auth文档 它只展示了如何获取 displayName 以及如何更新 displayName 所以我尝试更新它 但这有点不合逻辑 因为你怎么能在不创建某些东西的情况下更新它呢 所以我的问题是 如何设置注册
  • c# 替代方案中 cfusion_encrypt 中填充的密钥是什么?

    我找到了从这里复制 C 中的 cfusion encrypt 函数的答案 ColdFusion cfusion encrypt 和 cfusion decrypt C 替代方案 https stackoverflow com questio
  • 程序退出后,TcpListener Socket 仍处于活动状态

    当我的程序退出时 我试图停止 TCP 侦听器 我不关心套接字或任何活动客户端套接字上当前活动的任何数据 套接字清理代码本质上是 try myServer Server Shutdown SocketShutdown Both catch E

随机推荐