>Estoy utilizando la libería de clases _crypt.vcx que viene en las FFC de VFP, utilizo la única clase que contiene: _cryptapi. Estoy desarrollando en Windows XP Home Edition, la clase funciona bien pero al momento de utilizarla en Windows 2000 caí en la cuenta que encripta y desencripta de diferente forma. Utilizando el mismo objeto y la misma cadena, cada sistema operativo encripta de manera diferente debido seguramente a que la librería utiliza la API del sistema operativo. Obviamente esto acarrea un gran problema.
>
>Habrá alguna manera de especificarle que encripte de una manera estándar o eso ya es cuestión meramente de la API de cada sistema operativo e imposible de modificar?
>Alguna otra librería o componente encriptador recomendable?
>(ah!, este último free)Hay diferencias debido a las restricciones gubernamentales en cuanto a exportación de tecnología de criptografía. Estas se han eliminado hace un tiempo, permitiendo mudar de 40 bits a 128 bits.
Asegúrate que estas usando el "Microsoft’s Enhanced Cryptographic Provider" (rsaenh.dll) pero márcalo como Basic para que todos tus sistemas usen el mismo:
Corre regedt32.exe y busca:
HKEY_LOCALMACHINE\
SOFTWARE\
MICROSOFT\
CRYPTOGRAPHY\
DEFAULTS\
PROVIDER\
Microsoft Base Cryptographic Provider v1.0
Cambia la propiedad 'cprovidername' de la clase _cryptapi a "Microsoft Base Cryptographic Provider v1.0" que usa la constante dsMS_DEF_PROV_A en wincrypt.h
Ver en Wincrypt.h:
#DEFINE dsMS_DEF_PROV_A "Microsoft Base Cryptographic Provider v1.0"
HTH