【问题标题】:Call javascript function (with args) from c#从 c# 调用 javascript 函数(带 args)
【发布时间】:2011-11-11 09:12:29
【问题描述】:

我有一个 WCF 服务,我想传递一个 SHA1 哈希字符串作为结果。

在客户端,我有一个带有 javascript 的简单 html 页面。

我有在 javascript 中创建 SHA1 字符串的代码,我想将它用于客户端(对消息进行哈希处理)和服务器(对消息进行哈希处理)。

服务器使用 C#。

那么,是否可以从 C# 调用 SHA1 javascript 函数?

【问题讨论】:

  • 没有“去散列”消息这样的事情。哈希的全部意义在于它本质上是单向的。
  • dehash the message????哈希函数只是一种方式。散列函数的全部目的是为给定的输入提供唯一的散列,并且给定散列,您永远无法获得用于生成此散列的输入。
  • 还有,你为什么要调用服务端的JS函数呢? .Net 已经完美地实现了 SHA1 算法。
  • 你没事。谢谢!

标签: c# javascript hash


【解决方案1】:

这没有意义有两个原因:

1) 您不能真正在 C# 和 JS 之间共享代码,这些语言是为完全不同的目的而创建的并且不可互操作,除非您愿意允许代码生成混乱(例如在 ASP .NET Web 窗体中)。尽管如此,这看起来像是滥用DRY,从长远来看会造成伤害。

2) SHA1 是单向算法,无法对编码字符串进行去散列处理(此处不讨论rainbow tables)。你使用了错误的工具来完成这项工作。

【讨论】:

  • 1) 不一定正确,en.wikipedia.org/wiki/JScript_.NET ...但我同意在这种情况下这不是一个好主意。
  • @Jonas,但是你不能在浏览器中执行 JScript .NET,所以我们仍然存在互操作性问题,但是现在在 JS 和 JScript .NET 之间。 (当然,除了 JScript .NET 从一开始就死掉的事实。)
【解决方案2】:

您可以在 HTML 页面上放置一个隐藏控件,并将散列值放入该控件中,然后从 C# 访问该控件。

【讨论】:

    【解决方案3】:

    不!但是您可以将 SHA1 结果放入输入中并将其发布到服务器。

    【讨论】:

      猜你喜欢
      • 2017-03-20
      • 1970-01-01
      • 2023-03-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-08-28
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多