7个版本 (破坏性)
0.6.0 | 2023年3月8日 |
---|---|
0.5.0 | 2022年12月22日 |
0.4.0 | 2022年8月9日 |
0.3.0 | 2022年4月16日 |
0.1.0 | 2021年8月16日 |
#649 in 加密学
每月49次下载
25KB
459 代码行
Bevy Assets Bundler
支持内容加密的bevy资产捆绑器。当前归档格式为tar,加密算法为AES
特性
- 将资产文件夹捆绑成一个单独的assets.bin文件
- 使用自定义密钥加密资产
- 资产文件名编码(关闭加密时为base58,否则为AES+base58)
- 一个简单的开关,用于在调试构建中关闭捆绑
安装
# Cargo.toml
[dependencies]
bevy = "0.9"
bevy_assets_bundler = "0.5"
[build-dependencies]
bevy_assets_bundler = "0.5"
构建脚本
您可以使用 这个沙箱 生成随机密钥
use bevy_assets_bundler::*;
// build.rs
// encryption key: [u8; 16] array
// make sure the key is consistent between build.rs and main.rs
// or follow the example code to share code between build.rs and main.rs
fn main() {
let key = [30, 168, 132, 180, 250, 203, 124, 96, 221, 206, 64, 239, 102, 20, 139, 79];
let mut options = AssetBundlingOptions::default();
options.set_encryption_key(key);
options.encode_file_names = true;
options.enabled_on_debug_build = true;
AssetBundler::from(options).build();//.unwrap();
}
Bevy设置
use bevy_assets_bundler::*;
use bevy::{asset::AssetPlugin, prelude::*};
fn main() {
// encryption key: [u8; 16] array
// make sure the key is consistent between build.rs and main.rs
// or follow the example code to share code between build.rs and main.rs
let key = [30, 168, 132, 180, 250, 203, 124, 96, 221, 206, 64, 239, 102, 20, 139, 79];
let mut options = AssetBundlingOptions::default();
options.set_encryption_key(key);
options.encode_file_names = true;
options.enabled_on_debug_build = true;
App::new()
.add_plugins(
DefaultPlugins
.build()
.add_before::<bevy::asset::AssetPlugin, _>(BundledAssetIoPlugin::from(
options,
)),
)
.add_startup_system(setup)
.run();
}
fn setup(mut commands: Commands, asset_server: Res<AssetServer>) {
}
选项
#[derive(Debug, Clone)]
pub struct AssetBundlingOptions {
#[cfg(feature = "encryption")]
pub encryption_on: bool,
#[cfg(feature = "encryption")]
pub encryption_key: Option<[u8; 16]>,
#[cfg(feature = "compression")]
pub enable_compression: bool,
pub enabled_on_debug_build: bool,
pub encode_file_names: bool,
pub asset_bundle_name: String,
}
待办事项
- 压缩
- 更多加密算法
支持的Bevy版本
bevy | bevy_assets_bundler |
---|---|
main | bevy_main |
0.10 | 0.6 |
0.9 | 0.5 |
0.8 | 0.4 |
0.7 | 0.3 |
0.6 | 0.2 |
0.5 | 0.1 |
示例
运行示例: cargo run -p example
转到 target/release
文件夹,现在您可以移动example(.exe)和assets.bin到其他位置并运行,只需保持它们之间的相对路径即可。
免责声明
此库提供的加密机制无法保护您的资产免受所有类型的逆向工程,只要游戏可执行文件和资产捆绑包被分发给最终用户。
许可
MIT
依赖项
~21–60MB
~1M SLoC