Criptografar/Descriptografar entre máquinas é proibido
-
09-06-2019 - |
Pergunta
Estou usando uma chamada idêntica para "CryptUnprotectData" (exposta de Crypt32.dll) entre XP e Vista.Funciona bem no XP.Recebo a seguinte exceção quando executo no Vista:
"Decryption failed. Key not valid for use in specified state."
Como esperado, as versões do crypt32.dll são diferentes entre XP e Vista (com o XP na verdade tendo a mais recente, possivelmente como resultado do SP3 ou alguma outra atualização).
Mais especificamente, estou criptografando dados, colocando-os no registro, depois lendo e descriptografando usando "CryptUnprotectData".O UAC está desligado.
Alguém já viu esse antes?
Solução
O Função CryptUnprotectData a documentação afirma que geralmente só funciona quando o usuário tem as mesmas credenciais de logon do criptografador.
Isso me sugere que talvez a chave esteja vinculada ao token atual do usuário.Já que você mencionou o Vista, isso me faz pensar em UAC e tokens restritos.
Você pode nos mostrar algum código?Você pode nos fornecer mais informações sobre o que está fazendo com os dados - ou seja,você está movendo-o entre processos, usuários ou computadores?
Outras dicas
Legal.Espero que este seja o meu movimento estúpido da semana!;-)
Isso me sugere que talvez a chave está vinculado ao token atual do usuário.
Foi isso.Acontece que eu estava usando dados criptografados de outra máquina (a XP) e tentando descriptografar na máquina Vista.
Como afirma a documentação do MSDN:
Normalmente, apenas um usuário com o mesmo credenciais de logon como o criptografador pode descriptografar os dados.Além disso, A criptografia e a descriptografia devem ser feitas no mesmo computador.
Depois de criptografar novamente os dados na máquina Vista, a descriptografia funciona conforme o esperado.
Obrigado.