在网页中嵌入.NETC#?

在网页中嵌入.NETC#?,c#,web-applications,embed,C#,Web Applications,Embed,我想在网页中嵌入一些C#.Net代码,这些代码执行一些简单的加密/解密功能。这将是一个内部网页,因此用户将被隐式信任。有没有办法做到这一点?我需要点击用户的Windows MY key store(通过CAPI)取出密钥进行解密,点击LDAP服务器获取公钥进行加密。您可以使用Silverlight 但是,请注意,您也可以使用Javascript进行加密: 或者可能是c到JavaScript编译器,比如。定义“进入网页”的含义?网页由浏览器运行,浏览器通常只知道Javascript(和Jav

我想在网页中嵌入一些C#.Net代码,这些代码执行一些简单的加密/解密功能。这将是一个内部网页,因此用户将被隐式信任。有没有办法做到这一点?我需要点击用户的Windows MY key store(通过CAPI)取出密钥进行解密,点击LDAP服务器获取公钥进行加密。

您可以使用Silverlight

但是,请注意,您也可以使用Javascript进行加密:

或者可能是c到JavaScript编译器,比如。

定义“进入网页”的含义?网页由浏览器运行,浏览器通常只知道Javascript(和Java)


您可以将其作为Silverlight应用程序来完成。

考虑编写一个新的ASP.NET应用程序,其中您的加密/解密逻辑位于应用程序中。也许可以创建一个新的webforms应用程序,其中包含一个专门用于处理这些请求的页面

考虑在单独的.NET程序集中编写该加密逻辑,然后从ASP.NET应用程序中引用该程序集


不清楚您是否希望将其作为一项服务,或者用户是否希望在文本框中输入文本,让它在访问时执行加密。

您可以使用AJAX并调用您在网络上使用的加密功能。

我最终使用C#伪造了一个COM对象,然后使用JavaScript调用该COM对象,并能够通过浏览器与CAPI交互

JavaScript:

<html>
<head>
<script language="javascript">
var keystore = new ActiveXObject("RBCrypto.KeyStore");

function getCertList()
{
   try {
     keystore.openKeyStore("MY", true, false);
     var size = keystore.getStoreSize();

     var list = document.getElementById('list');
     list.size = size;

     for(var i = 0; i < size; i++)
     {
        var fname = keystore.getFriendlyName(i, true);
        var opt = new Option(fname, fname);
        list.options.add(opt);
     }
   }
   catch(err)
   {
     alert(err.description);
   }
}
</script>
</head>
<body onload="getCertList()">
   <center>
    <h2>KeyStore Test</h2>
    <hr />
    <br />
    <select id="list"></select>
   </center>
</body>
</html>
C#装配信息:

// Setting ComVisible to false makes the types in this assembly not visible 
// to COM components.  If you need to access a type in this assembly from 
// COM, set the ComVisible attribute to true on that type.
[assembly: ComVisible(true)]

为了实现这一点,用户必须在其计算机上安装您的.dll(确保您指定在安装程序中将您的.dll注册为vsdraCOM),并且他们必须将您的站点添加到其受信任的站点

我想使用已经在用户的Windows MY key store(我的密钥存储)中的密钥,从我读到的内容来看,Siverlight和Javascript都无法访问them@Petey:那么你需要编写一个浏览器插件。谢谢SLaks(这应该是Ex-Lax上的一个游戏吗?),我应该从哪里开始查找关于浏览器插件的信息?@Petey:哪个浏览器?谷歌是你的朋友。(不,这是我的首字母)不是在和我妻子睡觉之后,他不是。我在浏览器插件上找到了我需要的信息,再次感谢。Silverlight没有我需要的加密功能。除非有办法找到我没有找到的Windows MY keystore?这会起作用,但我需要一种方法从他们的Windows MY keystore中获取用户的私钥进行解密。其他一切都可以在服务器端完成。
// Setting ComVisible to false makes the types in this assembly not visible 
// to COM components.  If you need to access a type in this assembly from 
// COM, set the ComVisible attribute to true on that type.
[assembly: ComVisible(true)]