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

本站现有博文338篇,共被浏览970599次

本站已经建立2682天!

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