背景
想不到多年后,竟然又开始折腾起C和C++了,似乎又回到了当年的青春岁月。背景是在工作中经常有一些处理脚本,不可避免用到一些关键信息,比如数据库的连接账号,API调用的security key, 这些信息又会保存在配置文件中。而配置文件有个风险就是会被第三人打开,就有了一个想法,把这种字符串文本进行加密。
进而就又了一个,希望能够有一个基本的类库,可以供更多的开发语言使用。Python和C#各自都支持标准的加密算法,也测试可以互相加密和解密。但是如果扩展到更多,在windows平台,第一反应想到的是DLL。就只有重新拾起C/C++,经过一段时间的搜索和学习后,直接可靠的方法就是用OpenSSL的库进行开发。
加密和解密的开发
基本思路:
1. 选用DES,OpenSSL 3.0开始,有些Provider已经被移除,比如DES-CBC这些。
2. DES加密,也是需要KEY, 每次KEY是动态的,等于一次用完即销毁。
3. 正因为是动态一次的KEY,解密方不可能事先保存KEY,因此要对于KEY进行一个处理,包含在最终的加密结果。当然,对于KEY的处理就成为一个开放式问题,可以根据各自情况,进行不同复杂度的处理。当然,这个特制的处理算法被破解,那也没有什么安全可言。对于解释执行的开发语言,由反编译的风险。C/C++和Python的PYD是反编译到汇编级别,比较合适。
4. IV可以自己定义,内置在自己程序中。
基于上面的思路,用VS CODE+MINGW-W64开发了DLL。下面的链接库是一个最简单适用的链接库。