我之前看到过这个问题,但在这些情况下,海报想要在面向公众的网站上加密某些内容(通常是网址),而且回复主要是“不要!”。然而,在我的情况下,JavaScript将存储在非公共内部系统中,所以我认为我有更多的余地。类似问题的一个例子是:How to encrypt url in javascript and decrypt in c# - 并且答案实际上没有回答问题。
我的'JavaScript'实际上是'SuiteScript',其定义为“SuiteScript是基于JavaScript的API,可让开发人员扩展NetSuite”,其中NetSuite是托管的CRM软件包,因此用于加密我的任何编码除了我公司的员工(因此被认为安全隐藏)之外,所有人都会隐藏字符串。
我想做的是:
我已经用Google搜索并搜索了stackoverflow,但没有找到任何文章或答案,这些文章或答案提供了两种技术都可以使用的加密方法的明确说明。有人有这样的指示吗?
答案 0 :(得分:19)
最简单的方法是使用库作为实现标准的Stanford Javascript Crypto Library(在本例中为AES)并在C#中使用相同的密码(通过AesManaged
或AesCryptoServiceProvider
)
你会得到一个对称的密码,但几乎不会有一个参数(密钥)设置为两个lib工作。
您也可以使用非对称(公钥)密码。获取javascript代码的攻击者可以将精心设计的请求发送到您的服务器,但无法拦截其他请求。
有一个RSA in javascript的实现,RSACryptoServiceProvider
类在.Net中提供支持
包含javascript lib中RSA路径的full example is available in Code project以支持填充(使用.Net实现时必须使用)
这两种解决方案本身都很容易被重播(攻击者拦截一个字符串并稍后将其发回给服务器 - 可能是多次)