Amiguinhos,
ivanil
Sugeri algumas dicas de criptografia, mas para uso no desktop, com Harbour ou xHarbour.
Não percebi que ele desejaria compartilhar o mesmo dado criptografado no desktop entre o PHP e quando voce disse que a exclusividade da função do Harbour e seu resultado não adiantaria o uso no PHP fiquei curioso se acontece diferença no conteúdo em Base64 é diferente no desktop e no PHP.
Se bem que seja Base64 ou qualquer outro meio de criptografia só serve como segurança no caso de possuir senha pois as função de decodificação simplesmente obterão o resultado.
Vale lembrar que alguns métodos só fazem a criptografia e não o contrário, ou seja, não oferecem meio de decodificação.
Base64 tem codificação e decodificação: Base64_Encode() e Base64_Decode() mas não tem segurança.
Para codificar algo no Harbour e decodificar no PHP e vice versa será necessário funções nestes dois mundos em que o algorítimo seja padrão bcrypt.
Se o Base64 for compativel entre Harbour e PHP, pelo fato de não ter segurança, ainda assim poderá ser usado acrescentando segurança por meio de OpenSSL que existe para ambos ambientes.
Então podemos criptografar com senha usando OpenSSL e depois encapsular com Base64 e para recuperar desencapsular com Base64 e descriptografar com OpenSSL, exemplo:
No PHP podemos usar as funções openssl_encrypt para criptografar e a openssl_decrypt para descriptografar. Elas são mais conhecidas e vamos usar elas paras os nossos exemplos.
Código: Selecionar todos
$string = "meu texto a ser encriptado";
$algoritmo = "AES-256-CBC";
$chave = "minha_chave";
$iv = "wNYtCnelXfOa6uiJ";
$mensagem = openssl_encrypt($string, $algoritmo, $chave, OPENSSL_RAW_DATA, $iv);
echo base64_encode($mensagem); //codificada em base64 para conseguirmos enviá-la em transtornos
//saida da função é "KvMVCrccROwq0+gq1xAqK1lXvNYsFWv7xGgmEPdyCts="
Para mais detalhes sobre a função openssl_encrypt você pode acessar a documentação clicando aqui
Vamos explicar cada parâmetro usado no na função
$string é a mensagem que queremos criptografar
$algoritmo é o algoritmo usado para gerar a mensagem criptografada. Existem diversos algoritmos suportados pela openssl_encrypt e para ver a lista deles acesso o link clicando aqui
OPENSSL_RAW_DATA (opcional) Esta define o tipo de saída da função, neste caso em bytes. Caso não informe essa define o PHP vai disparar um PHP Warning.
$iv (opcional) É o vetor de inicialização, mas podemos chamar ele de salt que usamos nos processos de criptografia com hash. Usamos ele para que o resultado da criptografia seja diferente mesmo que $string seja a mesma. o $iv é um parâmetro de 16 caracteres opcional. Mas o PHP vai disparar um PHP Warning caso você não o informa. E caso você use um você precisa dele também para conseguir descriptografar.
Agora temos no nossa mensagem criptografada basta usarmos a função openssl_decrypt os parâmetros usados são os mesmos da função openssl_encrypt.
Código: Selecionar todos
$mensagem = "KvMVCrccROwq0+gq1xAqK1lXvNYsFWv7xGgmEPdyCts=";
$algoritimo = "AES-256-CBC";
$chave = "minha_chave";
$iv = "wNYtCnelXfOa6uiJ";
$mensagem = openssl_decrypt(base64_decode($mensagem), $algoritimo, $key, OPENSSL_RAW_DATA, $iv);
echo $mensagem; //já que codificamos a mensagem em base64 foi preciso decodificá-la.
//saída da função é "meu texto a ser encriptado"
Para mais detalhes sobre a função openssl_decrypt você pode acessar a documentação clicando aqui
Agora é só implementar estes métodos no Harbour e ter uma conversação mais confiável, transparente e portável.
Fonte: