Miudadestimida Posted April 23, 2012 at 10:40 PM Report #451020 Posted April 23, 2012 at 10:40 PM 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. 😄
Miudadestimida Posted April 24, 2012 at 12:48 PM Author Report #451103 Posted April 24, 2012 at 12:48 PM Estou disposta a pagar por este trabalho. Se algum programador de C estiver interessado que me contacte.
bsccara Posted April 24, 2012 at 01:04 PM Report #451109 Posted April 24, 2012 at 01:04 PM 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.
Miudadestimida Posted April 24, 2012 at 02:03 PM Author Report #451115 Posted April 24, 2012 at 02:03 PM O código PHP está num servidor. O que está no utilizador é o programa em c++ Cumprimentos.
bsccara Posted April 24, 2012 at 02:35 PM Report #451120 Posted April 24, 2012 at 02:35 PM Vê lá se te ajuda: http://pumka.net/2009/11/15/rsa-encryption-cplusplus-delphi-cryptoapi-php-openssl-1/
Miudadestimida Posted April 24, 2012 at 03:18 PM Author Report #451130 Posted April 24, 2012 at 03:18 PM 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.
Rui Carlos Posted April 24, 2012 at 03:43 PM Report #451138 Posted April 24, 2012 at 03:43 PM 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 Rui Carlos Gonçalves
Miudadestimida Posted April 24, 2012 at 04:39 PM Author Report #451158 Posted April 24, 2012 at 04:39 PM 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.
Rui Carlos Posted April 24, 2012 at 04:47 PM Report #451161 Posted April 24, 2012 at 04:47 PM http://www.cplusplus.com/reference/string/string/substr/ Rui Carlos Gonçalves
Miudadestimida Posted April 24, 2012 at 04:51 PM Author Report #451169 Posted April 24, 2012 at 04:51 PM 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?
Rui Carlos Posted April 24, 2012 at 05:02 PM Report #451173 Posted April 24, 2012 at 05:02 PM Qual é a posição do primeiro caracter que queres extrair? (pos) Quantos caracteres queres extrair? (n) Rui Carlos Gonçalves
bsccara Posted April 24, 2012 at 05:06 PM Report #451174 Posted April 24, 2012 at 05:06 PM 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)'
Miudadestimida Posted April 24, 2012 at 05:23 PM Author Report #451179 Posted April 24, 2012 at 05:23 PM 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. 😄
Rui Carlos Posted April 24, 2012 at 05:29 PM Report #451183 Posted April 24, 2012 at 05:29 PM 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. Rui Carlos Gonçalves
Miudadestimida Posted April 24, 2012 at 05:35 PM Author Report #451187 Posted April 24, 2012 at 05:35 PM Já consegui! É praticamente igual. Sou mesmo burra Basicamente é só fazer isto: user = string.substr ( 0 , 38 ); 😄 Mais uma vez obrigado. Isto às vezes é mesmo preciso uma ajudinha no raciocínio.
Recommended Posts
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 accountSign in
Already have an account? Sign in here.
Sign In Now