Jump to content

RC4 ou outro método simples e eficaz para encriptar uma string entre c++ e php


Recommended Posts

Posted

Queres passar uma string encriptada entre uma rotina em C++ e código em PHP, que irá chamar essa rotina ? Estando ambos a correr na mesma máquina não percebo qual o interesse, pois qualquer pessoa que tenha acesso à máquina pode estudar o código PHP (que é sempre visível) e descobrir facilmente como aceder à string. Para obfuscares uma mensagem tens de garantir que o emissor e receptor da mesma são opacos, caso contrário é inutil.

Posted

Obrigado pela sugestão, mas eu pretendia algo mais simples. Isto é uma pequena aplicação para funcionar dentro da empresa.

Eu pretendia algo assim:

string = "user=xxx&pass=yyy";

encrypt = (string, "secretkey");

Vi que RC4 fazia o que pretendia, mas não consegui meter nenhum dos exemplos que via na net a funcionar.

Posted

O RC4 não me parece grande ideia, visto que já não é lá muito seguro.

De qualquer forma, a biblioteca Crypto++ implementa uma série de cifras, entre elas o AES, que é actualmente a cifra simétrica standard. (Link útil: http://www.cryptopp.com/wiki/Advanced_Encryption_Standard)

Do lado do PHP, penso que o habitual é usarem o mcrypt.  Um dos problemas que li na net, é que as bibliotecas podem não ser compatíveis.  Terás que ter algum cuidado com os outputs gerados.

Por fim, há uma secção para anúncios de emprego (trabalho pago).

EDIT: aparentemente também podes usar o mcrypt em C/C++.

http://stackoverflow.com/questions/7347713/mcrypt-linux-how-to-use-rijndael-256-cbc

Posted

Bem obrigado pela dica. Consegui fazer o que pretendia usando mcrypt.

Agora tenho uma dúvida mesmo de noob  ?

Como é que faço "substr" em c++?

Por exemplo:

Tenho uma string = "user=joão&pass=123";

E eu só quero obter o que está nessa string até joão.

Em php seria algo assim: ValorPretendido = substr($string, 0, 9);

ValorPretendido seria igual a user=joão. Ou seja esta função lê uma string e guarda até ao número de caracteres que nós pretendemos.

Em c++ vi algo semelhante, mas vi que funciona por posições. Sinceramente baralhou-me a cabeça toda.

Não dá para fazer como em php?

Obrigado desde já pelas ajudas.

Posted

Por acaso já tinha visto esse exemplo. Mas não explica da forma como pretendia.

Por exemplo lá tem:  string str="We think in generalities, but we live in details.";

Imagina que eu queria só guardar isto: ""We think";

Como faria?

Posted

O processo mais simples com strings ASCIIZ (terminadas com zero) é meter um terminador na posição onde queres terminar:

char * corta_string(char * string, int num_carac)
{
  string[num_carac] = 0;
  return string;
}

Tem em atenção que esta função altera a string e só funciona se queres 'num_carac' caracteres a partir do primeiro.

Em Windows em vez de 'char' terás de usar 'wchar_t'.

Em C++ com objectos do tipo string fazes :

substr(<primeiro caracter a cortar>,<quantidade de caracteres a cortar>);

Com o teu exemplo farias 'substr(0,9)'

Posted

Rui Carlos aquilo é um url do tipo: http://localhost/servidor.php?user=xxx&pass=yyy;'>http://localhost/servidor.php?user=xxx&pass=yyy;

Imagina que eu quero guardar numa variável só até o xxx (nome do utilizador).

Neste exemplo que dei a função deveria contar e guardar até ao carácter 38.

Deveria ser assim.

string = "http://localhost/servidor.php?user=xxx&pass=yyy";'>http://localhost/servidor.php?user=xxx&pass=yyy";

user = substr(string, 0, 38);

A variável user teria portanto este valor: http://localhost/servidor.php?user=xxx

bsccara muito obrigado pelo teu exemplo. Isso já se aproxima da linguagem php que domino.  😄

Posted

Não estou a ver qual é a confusão.

Se queres os caracteres desde o início da string, o argumento pos deverá ser 0 (a primeira posição que queres manter é a posição 0).

Se queres 38 caracteres, então o argumento n deverá ser 38.

Aparentemente, as funções são semelhantes (C++ e PHP), com a diferença que no C++ tens um método, e no PHP uma função, o que afecta a forma com passas a string original.

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.