Jump to content
Miudadestimida

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

Recommended Posts

Miudadestimida

Alguém me pode dar um exemplo de como fazer isto? Já pesquisei no google, mas não achei nada que funcione.

Se alguém me poder ajudar ficaria eternamente agradecida.  :D

Share this post


Link to post
Share on other sites
Miudadestimida

Estou disposta a pagar por este trabalho. Se algum programador de C estiver interessado que me contacte.

Share this post


Link to post
Share on other sites
bsccara

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.

Share this post


Link to post
Share on other sites
Miudadestimida

O código PHP está num servidor. O que está no utilizador é o programa em c++

Cumprimentos.

Share this post


Link to post
Share on other sites
Miudadestimida

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.

Share this post


Link to post
Share on other sites
Rui Carlos

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

Share this post


Link to post
Share on other sites
Miudadestimida

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.

Share this post


Link to post
Share on other sites
Miudadestimida

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?

Share this post


Link to post
Share on other sites
bsccara

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)'

Share this post


Link to post
Share on other sites
Miudadestimida

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.  :D

Share this post


Link to post
Share on other sites
Rui Carlos

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.

Share this post


Link to post
Share on other sites
Miudadestimida

Já consegui!

É praticamente igual. Sou mesmo burra  :wallbash:

Basicamente é só fazer isto: user = string.substr ( 0 , 38 );  :D

Mais uma vez obrigado. Isto às vezes é mesmo preciso uma ajudinha no raciocínio.

Share this post


Link to post
Share on other sites

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.