用dpapi保护你的数据
我们已经知道,用win32api函数encryptfile和decryptfile可以方便的加解密文件。但是,这两个函数与系统帐户联系过于紧密,能否解密完全看当前帐户是否有更高的权限,用户的数据实际上并没有得到真正的保护。下面将介绍一种更为灵活的数据保护方法。
从win2000开始,操作系统开始提供一个名为data protection api (dpapi)的数据保护接口。该接口一共有两个函数,他们提供了系统级的数据保护服务。这两个函数存在于crypt32.dll库中,是cryptapi的一部分,但使用起来要比其他的cryptapi函数简单得多。
dpapi可以实现基于口令的数据加密和解密。也就是说我们提供一个口令用于加密,而其他人只有知道这个口令才能解密。实际上,dpapi上在后台为我们完成了相当复杂的加密解密操作,包括密钥的产生、存储、使用等。本文只想介绍一下如何使用dpapi,这里就不讨论它的内部机制了。
dpapi加密函数
bool winapi cryptprotectdata (
[in] data_blob *pdatain, //输入数据,明文