Advertisement

Window.crypto库与QuickJS引擎的封装和调用-易语言

  • 5星
  •     浏览量: 0
  •     大小:None
  •      文件类型:None


简介:
本文介绍如何在易语言环境中使用Window.crypto库,并实现其与QuickJS JavaScript引擎的有效封装及调用方法。 经常看到有人需要使用AES-GCM-128算法进行加密解密操作,然而网上关于此的文档较少。实际上,在Telegram登录页面就应用了这种算法,这可能让不少用户感到困扰。这个加密方式常见于浏览器内置接口window.crypto.subtle中,该接口不仅支持该类型的加密,并且还支持许多其他加密算法如RSA和DES等。 这里演示一个使用crypto-AES-GCM-128进行调用的例子: ```javascript function ___crypto__test(keyData, iv, data) { const format = raw, algorithm = AES-GCM, extractable = true, usages = [encrypt, decrypt]; window.crypto.subtle.importKey( format, keyData, algorithm, extractable, usages ).then(key => { return window.crypto.subtle.encrypt({ name: algorithm, iv: iv }, key, data).then(result => { console.log(Array.from(new Uint8Array((result)))) }); }) } console.log(___crypto__test( new Uint8Array([23, 113, 57, 6, 35, -69, -60, 98, 84, -17, -125, -49, 18, 6,-92 ,32]), new Uint8Array([47, 46 ,123 ,78 ,36 ,14 ,109 ,50 ,121 ,64 ,11, 38 ]), new Uint8Array([50, 49, 48]) )); ``` 以下是关于`crypto.subtle.importKey`的接口介绍: ```javascript const result = crypto.subtle.importKey( format, keyData, algorithm, extractable, usages); ``` - `format`: 字符串,描述要导入密钥的数据格式。可以是以下之一:raw(原始格式),pkcs8(PKCS#8格式),spki(SubjectPublicKeyInfo 格式)或 jwk (JSON Web 密钥格式)。 - `keyData` : 是ArrayBuffer, TypedArray 或 DataView,包含给定格式的密钥的数据。对于jwk类型,则是一个包含了键对象的 JSONWebKey 对象。 - `algorithm`: 字典对象,定义了要导入的密钥类型,并提供额外的算法特定参数。例如:RsaHashedImportParams(用于RSASSA-PKCS1-v1_5, RSA-PSS 或 RSA-OAEP),EcKeyImportParams (ECDSA或ECDH), HmacImportParams (对于 HMAC)。 - `extractable`: 布尔值,表明是否有可能使用SubtleCrypto.exportKey()或 SubtleCrypto.wrapKey()导出密钥。

全部评论 (0)

还没有任何评论哟~
客服
客服
  • Window.cryptoQuickJS-
    优质
    本文介绍如何在易语言环境中使用Window.crypto库,并实现其与QuickJS JavaScript引擎的有效封装及调用方法。 经常看到有人需要使用AES-GCM-128算法进行加密解密操作,然而网上关于此的文档较少。实际上,在Telegram登录页面就应用了这种算法,这可能让不少用户感到困扰。这个加密方式常见于浏览器内置接口window.crypto.subtle中,该接口不仅支持该类型的加密,并且还支持许多其他加密算法如RSA和DES等。 这里演示一个使用crypto-AES-GCM-128进行调用的例子: ```javascript function ___crypto__test(keyData, iv, data) { const format = raw, algorithm = AES-GCM, extractable = true, usages = [encrypt, decrypt]; window.crypto.subtle.importKey( format, keyData, algorithm, extractable, usages ).then(key => { return window.crypto.subtle.encrypt({ name: algorithm, iv: iv }, key, data).then(result => { console.log(Array.from(new Uint8Array((result)))) }); }) } console.log(___crypto__test( new Uint8Array([23, 113, 57, 6, 35, -69, -60, 98, 84, -17, -125, -49, 18, 6,-92 ,32]), new Uint8Array([47, 46 ,123 ,78 ,36 ,14 ,109 ,50 ,121 ,64 ,11, 38 ]), new Uint8Array([50, 49, 48]) )); ``` 以下是关于`crypto.subtle.importKey`的接口介绍: ```javascript const result = crypto.subtle.importKey( format, keyData, algorithm, extractable, usages); ``` - `format`: 字符串,描述要导入密钥的数据格式。可以是以下之一:raw(原始格式),pkcs8(PKCS#8格式),spki(SubjectPublicKeyInfo 格式)或 jwk (JSON Web 密钥格式)。 - `keyData` : 是ArrayBuffer, TypedArray 或 DataView,包含给定格式的密钥的数据。对于jwk类型,则是一个包含了键对象的 JSONWebKey 对象。 - `algorithm`: 字典对象,定义了要导入的密钥类型,并提供额外的算法特定参数。例如:RsaHashedImportParams(用于RSASSA-PKCS1-v1_5, RSA-PSS 或 RSA-OAEP),EcKeyImportParams (ECDSA或ECDH), HmacImportParams (对于 HMAC)。 - `extractable`: 布尔值,表明是否有可能使用SubtleCrypto.exportKey()或 SubtleCrypto.wrapKey()导出密钥。
  • -2D游戏模块
    优质
    易语言2D游戏模块引擎是专为易语言编程环境设计的游戏开发工具,提供便捷高效的2D游戏制作功能,帮助开发者快速实现游戏创意。 易语言是一种专为编程初学者设计的工具,旨在简化编码过程并使其更加直观易懂。在2D游戏开发领域,它提供了一个名为2D游戏引擎模块的核心框架,用于创建此类游戏。 Direct3D是微软提供的一个图形应用程序接口(API),而DirectX2D则是该套件的一个子集,专注于处理二维图像和动画等任务。通过将DirectX2D集成到易语言中,开发者可以在不深入了解底层编程的情况下制作出性能优良的2D游戏。 这个模块由多个关键部分组成: 1. **初始化**:这是所有游戏的基础步骤之一,包括设置窗口、配置图形设备以及资源管理器的启动工作。 2. **屏幕布局**:这涉及到定义分辨率、比例等视觉元素,并且可以调整背景色和界面位置。易语言提供了方便的方法来实现这些功能。 3. **元素操作**:此部分涵盖了角色、道具和其他游戏内要素,包括它们在游戏循环中的创建、更新与销毁。 4. **事件处理**:这涉及用户输入、时间流逝等实时互动因素的管理。模块中包含了响应玩家行为的功能函数。 5. **渲染和更新**:每帧的游戏画面都需要经过这两步操作来完成显示。易语言提供了协调这两个过程所需的接口。 6. **资源管理**:对于游戏中的图片、音频和其他媒体文件,此功能确保了它们被有效地加载、释放以及缓存。 7. **调试与优化**:模块还可能包含用于查找错误并提高性能的工具和方法。 通过研究易语言2D游戏引擎模块源代码,开发者不仅可以快速创建基础的游戏项目,还能深入了解相关技术原理。这对于有兴趣进入游戏开发领域的初学者来说是一个非常有价值的资源,并且其开放性支持进一步定制与扩展以满足更复杂的需求。
  • -V8在UseDotNet中
    优质
    本简介探讨了易语言中V8引擎与UseDotNet插件结合使用的高级技巧和应用场景,旨在提升跨平台脚本执行效率及灵活性。 易语言使用v8引擎(基于UseDotNet)中的V8Engine类与Handle类是由类库查看器生成的代码。关于v8.net的介绍可以参考相关文献或资料,具体内容可在互联网上查找。
  • 千年 tgs.rar
    优质
    千年易语言新引擎tgs.rar是一款由千年易语言团队开发的游戏脚本编写工具包,提供了强大的功能和便捷性,助力游戏开发者高效创作。 易语言编写的千年引擎适用于侠众道版本,并需配合基础DB LOGIN使用。
  • HookApi
    优质
    本项目提供了一套针对易语言环境下的HookAPI接口封装方案,简化了API拦截与注入的操作流程,便于开发者进行底层函数监控和修改。 封包截取,易语言HookApi封包,包含源码、模块以及成品。