EADST

Encrypt ONNX Model

ONNX model can be encrypted with the following code, which can be compiled with a .so file to improve code safety.

import hashlib
from Crypto import Random
from Crypto.Cipher import AES

def load_graph(path):
    with open(path, 'rb') as f:
        protobuf_byte_str = f.read()
    return protobuf_byte_str


def encrypt_file(raw, _key):
    bs = 32
    key = hashlib.sha256(_key.encode()).digest()
    s = raw
    raw = s + str.encode((bs - len(s) % bs) * chr(bs - len(s) % bs))
    iv = Random.new().read(AES.block_size)
    cipher = AES.new(key, AES.MODE_CBC, iv)
    return (iv + cipher.encrypt(raw))


def decrypt_file(enc, _key):
    key = hashlib.sha256(_key.encode()).digest()
    iv = enc[:AES.block_size]
    cipher = AES.new(key, AES.MODE_CBC, iv)
    s = cipher.decrypt(enc[AES.block_size:])
    return s[:-ord(s[len(s) - 1:])]


def main():
    input_path = 'test.onnx'
    output_path = 'test_encode.onnx'
    _key = 'Password123!'

    # encode
    nodes_binary_str = load_graph(input_path)
    nodes_binary_str = encrypt_file(nodes_binary_str, _key)
    with open(output_path, 'wb') as f:
        f.write(nodes_binary_str)

    # decode
    nodes_binary_str = load_graph(output_path)
    nodes_str_decrypt = decrypt_file(nodes_binary_str, _key)

    session = onnxruntime.InferenceSession(nodes_str_decrypt)
    # ort_inputs = {session.get_inputs()[0].name: onnx_input}
    # outputs = session.run(None, ort_inputs)


if __name__ == "__main__":
    main()
相关标签
About Me
XD
Goals determine what you are going to be.
Category
标签云
ResNet-50 torchinfo 算法题 v2ray llama.cpp CV Hotel ChatGPT Mixtral Paddle Transformers Plotly VGG-16 Tensor Rebuttal LeetCode Data 飞书 Streamlit 递归学习法 XML IndexTTS2 Color Base64 Conda TTS TensorFlow Hungarian PDF CSV Dataset Ubuntu Miniforge DeepSeek Pytorch Firewall CLAP 第一性原理 Plate 云服务器 TensorRT Qwen2.5 WebCrawler Review VSCode Random 论文速读 Jupyter Bipartite SQL 音频 OCR Windows InvalidArgumentError Math TSV 顶会 Quantize Git Animate FastAPI icon Logo Magnet Qwen Distillation YOLO Augmentation ONNX 财报 WAN 证件照 图形思考法 RAR SPIE Datetime Anaconda Jetson FP16 scipy Translation 净利润 LaTeX Numpy GPT4 Paper JSON ModelScope XGBoost Shortcut GIT Vmess Land Food git-lfs Permission CAM Tiktoken Bitcoin transformers C++ Nginx Linux GGML Template 关于博主 GoogLeNet 多线程 LLM Proxy Zip uwsgi 多进程 Baidu NLP Qwen2 LoRA tar Llama FP64 Algorithm logger 公式 论文 CC Docker Github Sklearn tqdm Michelin Pickle Image2Text Ptyhon CTC Freesound Vim Tracking printf BeautifulSoup API CUDA v0.dev AI Django GPTQ PIP Web Disk HuggingFace 报税 Crawler UNIX 搞笑 Diagram News Clash Search Heatmap Pillow FP32 SVR Gemma EXCEL Card QWEN RGB UI Bin 腾讯云 Statistics HaggingFace Python VPN BTC git 版权 Breakpoint 强化学习 图标 签证 Interview Safetensors Knowledge Attention Cloudreve Excel MD5 diffusers OpenCV COCO Google NLTK uWSGI Password Domain FlashAttention Pandas Input DeepStream Claude BF16 阿里云 Use PDB NameSilo Quantization 继承 SAM Hilton LLAMA OpenAI Video CEIR hf Agent Bert SQLite PyTorch PyCharm Website FP8 域名 Markdown mmap
站点统计

本站现有博文328篇,共被浏览854731

本站已经建立2562天!

热门文章
文章归档
回到顶部