关于winfrom调用js做加密神马的最讨厌了.
特别是做get 或Post请求的程序.
下面就介绍下吧.
1. 编译Js为dll,winfrom引用dll调用相应方法.
优点 : 直接编译成DLL,
缺点: 一般JS都被压缩,很多都无法直接编译成DLL...这个很操蛋.不推荐使用.
本帖隐藏的内容
附上编译js到dll的方法
在环境变量里面-系统变量-path-点编辑,在末尾添加";.netframework(注意编译版本)绝对路径"注意前面还有个分号,系统变量中不能有中文,空格..O了.直接cmd jec 调用编译就可以了. 例如: "jsc /t:library checkUser.js"
具体用法请参照我写的一篇 蘑菇街互心小工具 源码.
传送门 http://www.sufeinet.com/forum.php?mod=viewthread&tid=2754
2.拼接js内容,具体请参考飞哥 登陆58同城的例子.
传送门 http://www.sufeinet.com/thread-1835-1-1.html
优点: 没用过,也不清楚..
缺点: 没用过,也不清楚..
个人认为这个方法还不错,配合这飞哥那个转换的工具自动append因该也挺方便..
3.调用Interop.MSScriptControl
优点: 经常使用这个.[自从知道以后]..比较方便,js格式化修改好以后直接存资源里.调用起来很方便.
缺点: 以前找不到win7 64位的dll,用起来总会报错...代码中附上的附件为win7 64位可用的.
本帖隐藏的内容
引用 Interop.MSScriptControl的DLL,
调用方法 :
/// <summary>
/// 密码加密
/// </summary>
/// <param name="pass"></param>
/// <returns></returns>
public string EncodePass(string pass)
{
ScriptControlClass sc = new ScriptControlClass();
sc.UseSafeSubset = true;
sc.Language = "JScript";
sc.AddCode(Properties.Resources.QQRsa); //从资源中读取js内容,也可以写成Js文件神马的.
string str = sc.Run("rsaEncrypt", new object[] { pass }).ToString();
return str;
}
附上以前写的注册qq的源码,附带rsa算法.不过是旧版,上次和(♂)xiaotianbao 童鞋重新讨论了下发现总返回26,最近又比较忙也没重新再看.....
方法4: JSEngine
优点: 不用引用其他东西.直接传递也挺方便.
缺点: 额,可能是我用的不熟,感觉有点繁琐.
使用方法同方法3里面的方法2文档. 另♂[北京]SillyPGM 在群(总群)中有共享文件,我附件也有带,就不重新上传附件了.
方法5: 调用浏览器控件获得页面方法
这个就不推荐了....速度慢,要等到页面加载完成才会去执行调用,不然还报错...
优点: 毕竟是原生的...
总结下如下 :
我个人比较喜欢方法3,用的也比较多. 方法4的用的少,就觉得比较新鲜,其他好像也没觉得啥.可能用的比较少的原因吧...用4多的筒子可以来介绍下优缺点...都是自己用了以后总结的,肯定有不对的地方,欢迎指正..欢迎批评...