因为遇到遇到一个rsa加密问题,没有相应的加密库,网上有人说可以用htmlfile执行js,请教下如何写;在补充下我的问题,如下是我遇到的rsa加密函数,里面有一个引用jse库的,请教下怎样写这个vba。
var encrypt = new JSEncrypt();
encrypt.setPublicKey('MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDSGzsEzw5f85xQW8hbs46Tc/+5d+tOKO5nYaUnb4ViOCDUg8NziZ3oyj4gh3E7oqFP7eX6Wt2wqUQJ0YbnBfkPvqezCLMeefWBfquxhykuKU1E3wicDjvy8HI/oAOvZm2ytvI2+iEYSmAJZCQaqsrF9B+M0KoXaC2Nutq/1EfFpQIDAQAB');
var encrypted = encrypt.encrypt(message);
return encrypted;
}
![](https://profile-avatar.csdnimg.cn/97fa96e022a042e9b322a6cd854ae889_weixin_47730444.jpg!4)
vba如何写本地html文件执行js
- 写回答
- 好问题 0 提建议
- 追加酬金
- 关注问题
- 邀请回答
-
12条回答 默认 最新
关注
该回答引用ChatGPT,希望对题主有所帮助,如有帮助,还望采纳。
可以通过VBA里的CreateObject函数创建HTMLFile对象,然后在该对象里面执行JavaScript代码。下面是示例代码:
Sub runJS() Dim html As Object Set html = CreateObject("htmlfile") ' 加载HTML代码 html.Open html.Write "<html><body><script>function test(){alert('Hello World!');}</script></body></html>" html.Close ' 执行JavaScript代码 html.parentWindow.execScript "test()" End Sub
以上代码加载了一个包含一个函数test的HTML代码,并通过parentWindow对象的execScript方法执行test函数。你可以将你的RSA加密算法写成JavaScript函数,然后在以上代码中执行该函数。
如果你需要引用外部的JS库,可以将库文件保存在本地,在HTML代码中使用
<script>
标签引用,例如:Sub runJS() Dim html As Object Set html = CreateObject("htmlfile") ' 加载HTML文件 html.Open "c:\Temp\test.html" html.Close ' 执行JavaScript代码 html.parentWindow.execScript "var encrypt = new JSEncrypt();" html.parentWindow.execScript "encrypt.setPublicKey('MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDSGzsEzw5f85xQW8hbs46Tc/+5d+tOKO5nYaUnb4ViOCDUg8NziZ3oyj4gh3E7oqFP7eX6Wt2wqUQJ0YbnBfkPvqezCLMeefWBfquxhykuKU1E3wicDjvy8HI/oAOvZm2ytvI2+iEYSmAJZCQaqsrF9B+M0KoXaC2Nutq/1EfFpQIDAQAB');" html.parentWindow.execScript "var encrypted = encrypt.encrypt(message);" html.parentWindow.execScript "return encrypted;" End Sub
以上代码加载了一个名为test.html的本地文件,并执行在代码中定义的JavaScript代码。注意JSEncrypt库文件名和路径需要与test.html文件在同一目录下。在JavaScript中使用return语句返回加密结果,VBA中可以通过parentWindow对象获取执行结果。
本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 无用评论 打赏 举报
悬赏问题
- ¥15 latex投稿显示click download
- ¥15 请问读取环境变量文件失败是什么原因?
- ¥15 在若依框架下实现人脸识别
- ¥15 网络科学导论,网络控制
- ¥100 安卓tv程序连接SQLSERVER2008问题
- ¥15 利用Sentinel-2和Landsat8做一个水库的长时序NDVI的对比,为什么Snetinel-2计算的结果最小值特别小,而Lansat8就很平均
- ¥15 metadata提取的PDF元数据,如何转换为一个Excel
- ¥15 关于arduino编程toCharArray()函数的使用
- ¥100 vc++混合CEF采用CLR方式编译报错
- ¥15 coze 的插件输入飞书多维表格 app_token 后一直显示错误,如何解决?