Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/windows/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Windows VBA:用于在注册表中存储合理信息的用户特定secretkey_Windows_Vba_Encryption_Secret Key - Fatal编程技术网

Windows VBA:用于在注册表中存储合理信息的用户特定secretkey

Windows VBA:用于在注册表中存储合理信息的用户特定secretkey,windows,vba,encryption,secret-key,Windows,Vba,Encryption,Secret Key,我有一个outlook VBA脚本,需要连接到远程服务器。为此,用户必须输入其服务器密码。为了避免每次点击这个服务器密码,我需要将它安全地保存在注册表中 我已经找到了一篇关于如何加密字符串的文章: 但是你需要一个加密密钥。windows中是否有我可以使用的特定于用户的东西?我怀疑我是否能读取登录用户的windows密码,因为这会造成安全漏洞。但是有可能得到他的windows密码的散列吗?在这种情况下,我可以用windows密码的哈希值加密服务器密码,并满足这两个要求。除了登录用户之外,没有其他

我有一个outlook VBA脚本,需要连接到远程服务器。为此,用户必须输入其服务器密码。为了避免每次点击这个服务器密码,我需要将它安全地保存在注册表中

我已经找到了一篇关于如何加密字符串的文章:

但是你需要一个加密密钥。windows中是否有我可以使用的特定于用户的东西?我怀疑我是否能读取登录用户的windows密码,因为这会造成安全漏洞。但是有可能得到他的windows密码的散列吗?在这种情况下,我可以用windows密码的哈希值加密服务器密码,并满足这两个要求。除了登录用户之外,没有其他人可以获得服务器密码,用户本身也不需要每次都键入该密码

如果无法获取windows密码的哈希值,则可能窗口中还有其他一些特定于用户的信息,只有登录的用户才能访问这些信息


关于,

与此同时,我找到了一个解决方案。DPAPI还提供了两个名为CryptProtectData和CryptUnprotectData的函数。在那里,您可以加密服务器密码,而不需要另一个密码进行加密

您无法从VBA调用此函数,但通过DLL调用实现的示例如下:

有关这两个函数的详细信息,请访问:

“DPAPI使用从名为主密钥的伪随机512位数字派生的值数据来帮助保护机密信息……因为主密钥包含解密所有用户机密信息所需的数据,所以必须保护主密钥。它们使用从用户密码派生的值来保护。密码是唯一的值,只有用户知道”