当我们想做一个加解密系统的时候,有个问题还是绕不过的,就是如何保存加解密的密钥。
通常如果想做文件的加解密,都是用的对称算法,一般就是AES或者DES。
那这里有个问题密钥怎么管理呢?
基本上可以分两种:
1. 直接把文件加密,然后密钥信息保存在文件外。比如我们把C:\test.txt加密了,就生成一个密文。然后把密钥保存在某个地方,比如数据库。我们可以在数据库里面增加一个记录,如:
path key
c:\test.txt 123456789
当要解密的时候,就根据路径到数据库里面去查找对应的key,再进行解密。这么做有一个比较麻烦的问题,就是如果用户把这个文件copy到另外一个目录,那么就需要更新数据库。这就相当于我们需要监控这个文件c:\test.txt的动态。每一次移动copy什么的,都需要更新数据库,很麻烦。
2. 定义一个自己的文件格式。
一般来说,会把密文放在自定义文件的后面,前面加上一个文件头metadata。(也有把密文放在前面,metadata放在后面的)
这种方式就会比第一种好一些,因为我们可以在metadata里面放