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

本站现有博文332篇,共被浏览875590

本站已经建立2583天!

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