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

本站现有博文320篇,共被浏览757418

本站已经建立2422天!

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