【发布时间】:2009-07-28 22:56:02
【问题描述】:
背景:
我在客户端使用 javascript 加密的数据需要在服务器端解密。
据我所知,我使用的 javascript AES 库不能与 C# Rijndael 库互操作。
因此,我只能在 C# 中实现 javascript AES 以供使用。
我将尝试使用 jsc.exe 将 javascript 编译成 dll,看看反射器是否可以节省我一些时间。
我知道 jscript 与 javascript 不同,但我希望我可以摆脱一些非常接近的东西,并且只需手动进行修饰。
问题:
当我使用 JSC 编译 javascript 时,出现以下错误:
错误 JS1234:只有类型和包 允许在 a 中定义 图书馆
有问题的行是以下代码行中的第一行:
var GibberishAES = (function(){
var Nr = 14,
/* Default to 256 Bit Encryption */
Nk = 8,
Decrypt = false,
enc_utf8 = function(s)
{
try {
return unescape(encodeURIComponent(s));
}
catch(e) {
throw 'Error on UTF-8 encode';
}
},
dec_utf8 = function(s)
{
try {
return decodeURIComponent(escape(s));
}
catch(e) {
throw ('Bad Key');
}
},
完整来源可以是found here:
我不确定是什么问题。我也愿意接受有关如何在 Javascript 和 C# 之间加密/解密数据的建议。
【问题讨论】:
-
我没有答案,但我很好奇为什么不能只使用 HTTPS 来处理客户端和服务器之间的加密?
-
很难说问题出在哪里,因为您提供的行没有多大意义,也不是完整的陈述。可以多加几行代码吗?
-
@Alconja:不幸的是,我没有任何控制在客户端和服务器之间使用 SSL。一些客户端会设置 SSL,而其他客户端则不会。因此,所有敏感数据必须在客户端加密才能传输。 @kanngard:好的,我已经更新了,还添加了指向完整 js 文件的链接。谢谢!
-
@Alan: 所有客户端都支持 SSL/TLS。客户端不需要安装任何东西就可以工作。您需要做的就是使用证书设置您的服务器以使用
HTTPS。 -
@Andrew:谢谢,我知道 SSL/TLS 是如何工作的。当我说我无法控制使用 SSL 时,请相信我。如果您的页面同时包含安全(我的小 javascript)和不安全(客户页面),您将收到一条很好的错误消息。我们有不少客户不希望弹出此对话框,并且不希望在他们的终端上使用设置 SSL。
标签: c# encryption javascript jscript.net