在有关 CryptProtectData
函数的文档中,Microsoft 告诉您只能使用CryptProtectData
小缓冲区。
这个调用可能很慢,而且会占用内存,而且不可靠。仅用于小缓冲区。
CryptProtect/UnprotectData 通过 RPC 调用 LSA,在 LSA 中进行实际的加密或解密,并且 RPC 对可以传递的数据量有上限。加密大量数据的一般经验法则是使用对称密钥保护大容量数据,然后使用 CryptProtectData 保护对称密钥。解密只是一种逆转,您会发现更好的性能(避免昂贵的 RPC 操作)并且通常同样安全(取决于用于大数据块的对称算法)。
那么这个上限是多少呢?我可以用它来保护每个长度为 256 字节的多个密码吗?