我以前见过这个问题,尽管在这些情况下,发帖者想要加密面向公众的网站上的某些内容(通常是网址),而答复大多是“不!”。然而,就我而言,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 包,因此用于加密我的字符串的任何编码都将是对每个人都隐藏,除了我公司的员工(因此被认为是安全隐藏的)。
我想做的是:
- 生成查询字符串(例如 userid=guidValue&firstName=stringValue&company=stringValue&...),
- 使用安全方法加密(例如 AES256、RSA,任何人认为安全的方法),
- 调用基于 C# 的网站上的网页,并在 URL 中传递此字符串(例如 mysite.com/mypage.aspx?encStr=encryptedString)
- 让 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(使用前将#替换为@)