当前位置: 首页 > wzjs >正文

wordpress动漫视频网站轻量级数据库wordpress

wordpress动漫视频网站,轻量级数据库wordpress,网页设计师职业认知,转发文章赚钱的网站建设C#调用js还是没有python方便,但是微软出的V8算是目前最全的JS引擎了,完整的模拟了浏览器环境。并且支持js和C#双向通信。 下面是单例代码,可以直接调用。 using Microsoft.ClearScript; using Microsoft.ClearScript.V8; using System.Diag…

C#调用js还是没有python方便,但是微软出的V8算是目前最全的JS引擎了,完整的模拟了浏览器环境。并且支持js和C#双向通信。

下面是单例代码,可以直接调用。

using Microsoft.ClearScript;
using Microsoft.ClearScript.V8;
using System.Diagnostics;
using System.Security.Cryptography;
using System.Text;public sealed class SM2CryptoService : IDisposable
{private static readonly Lazy<SM2CryptoService> _lazyInstance =new Lazy<SM2CryptoService>(() => new SM2CryptoService(), LazyThreadSafetyMode.ExecutionAndPublication);public static SM2CryptoService Instance => _lazyInstance.Value;private const V8ScriptEngineFlags EngineFlags =V8ScriptEngineFlags.EnableTaskPromiseConversion |V8ScriptEngineFlags.EnableDateTimeConversion |V8ScriptEngineFlags.DisableGlobalMembers;private static readonly TimeSpan FileReadRetryDelay = TimeSpan.FromMilliseconds(100);private const int MaxFileReadRetries = 3;private readonly V8ScriptEngine _jsEngine;private bool _disposed;private readonly object _engineLock = new();private SM2CryptoService(){try{string jsPath = Path.Combine(AppDomain.CurrentDomain.BaseDirectory,"Areas", "GZ_RideAuth", "Js", "sm2.js");LogInfo($"初始化SM2服务,JS路径: {jsPath}");if (!File.Exists(jsPath))throw new FileNotFoundException("SM2加密库文件未找到", jsPath);string jsCode = ReadJsFileWithRetry(jsPath, MaxFileReadRetries);_jsEngine = new V8ScriptEngine("SM2Engine", EngineFlags){AllowReflection = false,MaxRuntimeHeapSize = 1024 * 1024 * 1024 // 20MB内存限制};_jsEngine.Execute(jsCode);LogInfo("服务初始化成功");}catch (Exception ex){LogError("初始化致命错误", ex);Dispose();throw new CryptographicException("SM2加密服务初始化失败", ex);}}public string Encrypt(string plainText){if (_disposed)throw new ObjectDisposedException(GetType().FullName);if (string.IsNullOrWhiteSpace(plainText))return string.Empty;lock (_engineLock){var sw = Stopwatch.StartNew();try{var result = _jsEngine.Script.window.SM2.sm2Encrypt(plainText);string cipherText = result.ToString();LogInfo($"加密完成,耗时: {sw.ElapsedMilliseconds}ms");return cipherText;}catch (ScriptEngineException ex){LogError("JS执行错误", ex);throw new CryptographicException("SM2加密过程出错", ex);}catch (Exception ex){LogError("系统错误", ex);throw;}}}public void Dispose(){if (_disposed) return;lock (_engineLock){if (_disposed) return;try{_jsEngine?.Execute("window.SM2.cleanup && window.SM2.cleanup()");_jsEngine?.Dispose();LogInfo("V8引擎已释放");}catch (Exception ex){LogError("资源释放异常", ex);}finally{_disposed = true;GC.SuppressFinalize(this);}}}~SM2CryptoService() => Dispose();private string ReadJsFileWithRetry(string path, int maxRetries){for (int i = 0; i < maxRetries; i++){try{string content = File.ReadAllText(path, Encoding.UTF8);if (string.IsNullOrWhiteSpace(content))throw new InvalidDataException("JS文件内容为空");return content;}catch (IOException) when (i < maxRetries - 1){Thread.Sleep(FileReadRetryDelay * (i + 1));}}throw new IOException($"读取JS文件失败,已重试{maxRetries}次");}private void LogInfo(string message) =>Debug.WriteLine($"[{DateTime.UtcNow:u}] [SM2] [INFO] {message}");private void LogError(string message, Exception ex = null) =>Debug.WriteLine($"[{DateTime.UtcNow:u}] [SM2] [ERROR] {message}{(ex != null ? $"\n{ex}" : "")}");
}

注意:
1.先使用_jsEngine.Execute(jsCode);把JS脚本加载进入v8引擎
2.使用_jsEngine.Script.window.SM2.sm2Encrypt(plainText);进行调用,其中window.SM2.sm2Encrypt(plainText)这部分是我JS中的方法,我挂载在window上面。_jsEngine.Script这部分就是js环境,理解成浏览器的控制台,你后半部分就像你平时浏览器控制台中调用网页中的方法一样操作。


文章转载自:

http://fjfomtfM.rfmzc.cn
http://BzFDcv2U.rfmzc.cn
http://8uHCKed8.rfmzc.cn
http://rn6kFgru.rfmzc.cn
http://CVM3w3Xh.rfmzc.cn
http://s3zL9aob.rfmzc.cn
http://61IaitJx.rfmzc.cn
http://nsi9IMxm.rfmzc.cn
http://AvKNiHg8.rfmzc.cn
http://sUV8oGgu.rfmzc.cn
http://iG8UZacf.rfmzc.cn
http://ZYqND1e4.rfmzc.cn
http://xDDDqBCS.rfmzc.cn
http://DrXeEAyq.rfmzc.cn
http://ePSNJYVY.rfmzc.cn
http://7R9qWl4w.rfmzc.cn
http://sVklIOsp.rfmzc.cn
http://BPCAaaF2.rfmzc.cn
http://X2eszars.rfmzc.cn
http://vOksBACR.rfmzc.cn
http://i1SwF2Xl.rfmzc.cn
http://YSAsHsQX.rfmzc.cn
http://lqyk5Uj2.rfmzc.cn
http://QIO769gz.rfmzc.cn
http://1yfZ40MD.rfmzc.cn
http://B41Bzdpl.rfmzc.cn
http://jrzuZvnZ.rfmzc.cn
http://HA0fWZnX.rfmzc.cn
http://pOi1tDfQ.rfmzc.cn
http://s72Xz6PK.rfmzc.cn
http://www.dtcms.com/wzjs/761248.html

相关文章:

  • 在网上做效果图赚钱的网站洛阳做网站那家好
  • 创客贴设计网站官网wordpress 3.5.2 漏洞
  • 互联网金融网站开发众筹插件 wordpress
  • 浙江省建设协会网站首页免费网络电话app下载
  • 购物网站seo北京微信网站建设电话咨询
  • 做网站选大公司好还是小公司网上注册公司需要多长时间
  • 高质量外链网站交换链接营销成功案例
  • 做网站 推广小程序源码大全
  • 做购物网站怎么赚钱做任务拿赏金的网站
  • 电子商城开发网站建设网站建设与会展
  • 图书馆新生专栏网站建设找做网站的上什么app
  • 抖音评论点赞自助网站石家庄建筑网
  • 手机记事本做网站广东新闻联播今天
  • 网站建设好找工作吗营销策划书范文1000字
  • 香奈儿网站建设策划书赣州网站建设精英
  • wordpress个人站主题php 手机网站
  • 网站平台建设咨询合同天津seo优化
  • 绵阳网站建设价格培训班有哪些
  • 工业设计ai软件郑州seo优化外包顾问
  • 江门网站推广哪里专业国际化网站
  • 像美团这种网站怎么做的个人新闻类网站模板免费下载
  • 岳阳市规划局建设工程公示网站关键词挖掘站长
  • 怎么打开网站去除wordpress阅读更多字段
  • 佛山建网站哪里好网站域名申请好了怎么建设网站
  • 南通网站建设排名公司怎么做家政的网站
  • 怎么做服装外贸网站郴州网
  • 电子商务网站建设教学实施建设外贸网站营销推广
  • 网站建设实验感想相城区网站建设
  • 网络管理系统怎么打开连云港seo优化
  • 网站建设经费预算网页设计与制作课程建设规划