【理论原理】DYNA加密逻辑原理深度解析 自编cmd加密程序
DYNA作为最流行的商业求解软件之一,各大企业都在用DYNA来求解各种工程问题,企业间也经常交流传递DYNA求解文件,为了不泄露商业机密和模型的可计算性,DYNA开放加密接口。在DYNA的官方技术答疑网站中有对加密逻辑进行详细的说明,链接如下:
https://ftp.lstc.com/anonymous/outgoing/support/FAQ/Instructions_encryption
通过官方说明可以将加密逻辑表达为如下图
![【理论原理】DYNA加密逻辑原理深度解析 自编cmd加密程序的图1](https://img.jishulink.com/202406/attachment/0692541a075646e593492ee906edb934.png)
上述加密逻辑图需要了解背景及关键字含义如下:
(1)DYNA加密是基于openPGP加密协议,DYNA加密公钥在上述官网链接中可查,加密私钥隐藏在求解器中
(2)对称加密算法,是指加密和解密使用相同的密钥
(3)非对称加密算法,是指加密和解密使用不同的密钥
上述加密逻辑图可以理解为以下步骤:
(1)将求解文件分为master文件和include文件,随机生成AES密钥
(2)基于openPGP加密协议,将include文件和AES密钥进行AES对称加密,生成AES加密文件
(3)基于openPGP加密协议,将AES加密文件和DYNA加密公钥进行Elgamal非对称加密,生成Elgamal加密文件
此时,求解文件加密完成,求解时
(4)求解器使用DYNA加密私钥,将Elgamal加密文件解密,得到AES加密文件和AES密钥
(5)求解器使用AES密钥,将AES加密文件解密,得到include文件和AES密钥
上述加密逻辑简单易实现,行业内有很多二次开发的加密小软件,但如DYNA中国总代理商仿坤开发加密小软件,被加入许可证书限制使用权限,李某人尊重知识产权,但私以为如此简单的且公开的方法没必要层层设卡,强烈建议通过前文的DYNA官方加密说明链接,阅读理解后即可自行编程。
业务繁忙的朋友,也可以通过简单理解上述加密逻辑图,按如下案例操作实现加密:
(1)下载并安装Gpg4win开源免费加密软件(https://www.gpg4win.org/),下载时选择捐助0元,有条件的朋友也可以适当支持一下
(2)下载并保存DYNA加密公钥,或将以下分割线内的DYNA公钥用文本保存命名为lstc_pgpkey.asc
-----BEGIN PGP PUBLIC KEY BLOCK-----
Version: GnuPG v2.0.19 (GNU/Linux)
mQGiBFM61ScRBACgqz7q7kytYuuRpa+1DTD9J3Kn8s3kMHO7zPtLu8bsb1L1I4UQ
CC6HRL2fMVRtBQZuy445eqsot5npcnzpQ6rcvsQZTVCqXH/gx5O5xs6/W8ktaJXn
hBrxGabk6IzlOXYvmQ2+jOATfQs29pt4+e/+oXFI9EfKBHao2dEgtOWS6wCg+9gi
9azFZOUIHV0EJDPFQJZrRFUD/11AG23e7964MN0HTWAWCIvPs8johwB7NOF6UjRR
xuqD/ZqiQ1hhmQzJR89Weg0TeFFCVP+yK2tgPOgsXry/r7WF/RnO9S/7yvtTWHr8
QPVxCur7vcKX/Lis6ByiyyDvihavBB6RgMYl5HkrEstTY/j3O09woxtQ4Pae5yZ2
woj0BACI87Lk6aO/9wAVXBDYyufqX9bea/lbMEuQZ7qzBO7xjSwchYeoLUbCK5sh
iGI+nT3+liqUZW8+KXd/6I+xsN+YXuS9olmeN5L391VF7ZnWcsOKLbr3tnA3TKJb
Q/txpFhI/2CM2u0VU6w6DAAGlxic5Gf1Cdc8/mA5KaNEuq24PrRDTGl2ZXJtb3Jl
IFNvZnR3YXJlIFRlY2hub2xvZ3kgQ29ycG9yYXRpb24gKExTVEMpIDxzdXBwb3J0
QGxzdGMuY29tPohVBBMRAgAVAhsDAh4BAheABQJTOtVDAgsHAhYAAAoJECATgx5l
rsCu0P4An2f9h8YuWfW+mNY1gm29nIs+kbeZAJ44HMvNgfOVtqUxUCyTlCLjwR6O
CbkBDQRTOtUnEAQA4Q4D0F6l77N0e6XCIH49b7MHFyjkq3OdgHE4vylubEAXVeeX
FD4Vrojn3t/I1QqAUG4ipZZAlLVrSYruzQLYaLhjYP124Py/b6vRo0FcyVsLbazj
BxnGs+fFTrYspLaWfBK2dIrQ9ze9QSLhNous36W3em+fhx8hzGgcUUZRQOcAAwUD
/RkrdN+Mbim6H6MNnEKhoXlpogzriCUB+hpxfQSP+go6+Np2RGkQfTEu+W51vrFA
cW36cncp3OLpsvKzaQgTTT1rqb11Hoe/YpH3T9ngz4NX7a4OSDhHDKC1Q1BuzTEJ
3A3RXeAgRaMV8+hFm91g2KWZuMeqd+nSo2sb5EvpFhW9iEkEGBECAAkFAlM61ScC
GwwACgkQIBODHmWuwK7BaQCfUovuhS6oXuh+1sSqkGCxzHEGER8AniHYve/Kn6CL
SoAeXMxSC7F44Ood
=R0pG
-----END PGP PUBLIC KEY BLOCK-----
(3)将以下代码用文本保存命名为Encrypt.bat
gpg --import lstc_pgpkey.asc gpg -e -a --rfc2440 --textmode --cipher-algo AES --compress-algo 0 -r 0x65AEC0AE include
(4)将待加密文件include,DYNA公钥文件lstc_pgpkey.asc,cmd程序Encrypt.bat放在同一目录下
(5)双击运行Encrypt.bat,在提示指令中输入y,加密完成
(6)在目录下可以看到生成了include.asc加密文件