最近工作中需要對caffe的prototxt和model文件進行加密操作。翻看github,瀏覽到了一份不錯的code。
進過調試,主體代碼是沒有問題。
1:自己需要的改動是使用二進制方式讀取model。
2:還需要加入一下自己的明文,防止他人使用相同代碼進行解密。
fprototxt.open(prototxtFile);
fmodel.open(caffemodelFile);
替換成
fprototxt.open(prototxtFile);
fmodel.open(caffemodelFile, std::ios::binary);
3:如何調試加解密調試
// **********************
std::ofstream test_proto;
test_proto.open(R"(I:\encryption_proto.txt)");
for (size_t i = 0; i < enc_prototxt_file_size; i++)
{
test_proto << prototxt_file_buffer[i];
}
test_proto.close();
// **********************
// **********************
std::ofstream test_proto;
test_proto.open(R"(I:\decryption_proto.txt)");
for (size_t i = 0; i < prototxt_string.size(); i++)
{
test_proto << prototxt_string[i];
}
test_proto.close();
// **********************
感興趣的可以嘗試一下。
https://github.com/xialuxi/encryptio_caffemodel
1、模型使用rc6算法加密
2、模型解密
3、在內存中加載網絡