代码之家  ›  专栏  ›  技术社区  ›  Scott Marlowe

不能跨计算机加密/解密

  •  3
  • Scott Marlowe  · 技术社区  · 16 年前

    "Decryption failed. Key not valid for use in specified state."
    

    正如所料,crypt32.dll的版本在XP和Vista之间是不同的(w/XP实际上有较新的版本,可能是SP3或其他一些更新的结果)。

    更具体地说,我正在加密数据,将其放入注册表,然后使用“CryptUnprotectData”读取和解密。UAC已关闭。

    有人见过这个吗?

    2 回复  |  直到 12 年前
        1
  •  4
  •   Roger Lipscombe    16 年前

    CryptUnprotectData function 文档说明,它通常仅在用户具有与加密机相同的登录凭据时才起作用。

    这对我来说意味着密钥可能绑定到用户的当前令牌。既然你提到Vista,这让我想到了UAC和受限代币。

    你能给我们看一些代码吗?您能给我们提供更多关于您正在处理数据的信息吗?例如,您是在进程、用户还是计算机之间移动数据?

        2
  •  1
  •   Scott Marlowe    16 年前

    美好的希望这是本周我的骨头头运动!;-)

    这对我来说意味着

    就这样。原来我使用的是来自另一台机器(XP机器)的加密数据,并试图在Vista机器上解密。

    正如MSDN文件所述:

    通常,只有一个用户具有相同的 解密数据。此外 在同一台计算机上。

    一旦我在Vista机器上重新加密了数据,解密工作就会如期进行。

    谢谢