我对OpenYSM编写的初始的设计理念:
开放以及模块化,即OpenYSM可以用可选的JAR模块扩展支持的图片格式、音频格式、音频解编码器、压缩方法。
使用改进的7-zip或lzma sdk压缩成带加密或不带加密的OpenYSM格式。
OpenYSM兼容YSM的大部分功能,这意味着你可以在OpenYSM使用其他人为YSM创作的无加密模型。
OpenYSM客户端从OpenYSM服务端自动同步模型前,会生成RSA密钥对和AES-GCM密钥,然后把AES-GCM密钥和RSA密钥对的公钥发送到服务端。
OpenYSM客户端从OpenYSM服务端自动同步的模型是经过RSA+AES-GCM加密的二进制文件,客户端会从服务端获取模型的数据流并使用本地RSA私钥解密,以及使用AES-GCM密钥再次解密模型文件。
向下兼容:
OpenYSM仅会使用必要的旧版代码进行向下兼容。
注释:
1.AES-GCM指的是AES加密的伽罗瓦/计数器模式。OpenYSM使用这个来进行模型的第一层加密。
2.AES-GCM密钥的默认长度为256位。
3.RSA密钥对的默认长度为4096位。
4.OpenYSM的加密功能、压缩功能、格式、设计理念以及支持的图像格式、音频格式与YSM不一致。
5.OpenYSM除了默认支持png、jpeg作为模型贴图以外,还支持可选的jxl、avif作为模型贴图。
5.1.avif需要av1视频解编码器。
5.2.jxl、avif的支持以可选的JAR模块提供。
5.3.OpenYSM支持png、jxl的渐进式解码。
6.OpenYSM除了默认支持ogg作为模型音效以外,还支持mp3作为模型音效。
6.1.mp3的支持以可选的JAR模块提供。