RoM 0 Denunciar post Postado Março 16, 2010 Bem, eu criei uma LIB para C, mas tem alguns dados nela que mesmo compilado, ficam expostos, e que eu não gostaria que ficassem expostos... são logins, senhas, querys, etc. Se eu uso #define para guardar os valores, abrindo no bloco de notas consigo ler o que foi definido. Se eu uso variáveis para guardar os valores, abrindo em um editor HexaDecimal consigo ler o que foi definido. De que forma eu conseguiria esconder estes dados? Compartilhar este post Link para o post Compartilhar em outros sites
VictorCacciari 42 Denunciar post Postado Março 16, 2010 criptografia Compartilhar este post Link para o post Compartilhar em outros sites
_Isis_ 202 Denunciar post Postado Março 16, 2010 Nao vejo como criptografia pode ser aplicada nisso. O normal eh usar um obfuscator. Compartilhar este post Link para o post Compartilhar em outros sites
Brain_Storm 0 Denunciar post Postado Março 17, 2010 Nao vejo como criptografia pode ser aplicada nisso. O normal eh usar um obfuscator. nem criptografia nem obfuscation é seguro para senhas ou logins. Compartilhar este post Link para o post Compartilhar em outros sites
VictorCacciari 42 Denunciar post Postado Março 17, 2010 Criptografia não é seguro? Depende... uma cifra de césar pode não ser segura, mas um elGamal é MUITO seguro! O único problema é que, criptografando os dados é preciso descriptografa-los antes de utilizar, o melhor era usar alguma cifra assimétrica e pedir ao utilizador a chave para decifrar. Ou então usar uma cifra homomórfica, mas elas só existem na teoria por enquanto... =/ Na verdade... o melhor mesmo era não deixar logins e senhas hardcoded! Compartilhar este post Link para o post Compartilhar em outros sites
RoM 0 Denunciar post Postado Março 20, 2010 Alguém pode me mandar uma função ou uma lib que contenha uma função para desencriptar qualquer tipo de encriptação? Pode ser qualquer... MD5, Base64... Eu vou fazer a encriptação aqui no PHP por exemplo, jogo eles lá criptografados com a função de desencriptar... Compartilhar este post Link para o post Compartilhar em outros sites
VictorCacciari 42 Denunciar post Postado Março 20, 2010 MD5, b64, etc... são funções hash... isto é, são one-way-functions. Não da pra desencriptar um MD5. Pesquise por criptografia. Comece estudando as cifras monoalfabéticas, passe para as polialfabéticas e então as assimétricas. Das cifras assimétricas, a que exige menos conhecimento matemático é a RSA. Compartilhar este post Link para o post Compartilhar em outros sites
_Isis_ 202 Denunciar post Postado Março 20, 2010 nem criptografia nem obfuscation é seguro para senhas ou logins. Se você quer algo seguro p/ um computador, então não ligue ele na tomada. O fato é que p/ dificultar a leitura deixando o código executável, o que faz isso é um obfuscator. MD5 já era. http://www.hardwareanalysis.com/content/topic/73234/ O próprio criador não aconselha mais. RSA também está indo. Óbvio que 'basta' aumentar a quantidade de bits p/ tornar mais difícil, mas por baixo dos panos isso é adiar o problema (igual o bug do milênio). Se a máquina que utiliza luz p/ transmitir info entre os processadores da IBM sair, #medo. E não pq você vai ter uma em casa... Vitor, o IEEE tem um paper de 2004 que fala sobre o desenvolvimento de um novo ElGamal baseado em homomorfismo. Ou você é membro ou está num IP de uma universidade p/ ter acesso... Compartilhar este post Link para o post Compartilhar em outros sites
VictorCacciari 42 Denunciar post Postado Março 20, 2010 Se você quer algo seguro p/ um computador, então não ligue ele na tomada. +1 Vitor, o IEEE tem um paper de 2004 que fala sobre o desenvolvimento de um novo ElGamal baseado em homomorfismo. Ou você é membro ou está num IP de uma universidade p/ ter acesso... Interessante, não sabia disso. Pesquisarei sobre o assunto.Mas, quando estudei o ElGamal, se eu me lembro ele era homomórfico para multiplicação, não é? Falando em homomorfismo, Craig Gentry criou, em 2009, o primeiro sistema criptográfico totalmente homomórfico (sobre a multiplicação e adição), a questão é que só funciona na teoria... são precisos incontáveis recursos computacionais para colocar isso pra funcionar em um tempo de execução aceitável. Compartilhar este post Link para o post Compartilhar em outros sites
_Isis_ 202 Denunciar post Postado Março 20, 2010 O RSA também é homomórfico p/ multiplicação. Essa notícia de 2009 eu sabia, mas a crítica que estavam fazendo era sobre o 'lattice'. E o paper que eu li diz "However, instead of using ideal lattices over a polynomial ring, our bootstrappable encryption scheme merely uses addition and multiplication over the integers." Por acaso é esse? http://eprint.iacr.org/2009/616.pdf Compartilhar este post Link para o post Compartilhar em outros sites
RoM 0 Denunciar post Postado Março 20, 2010 Como não consegue? -> http://www.php.net/manual/en/function.base64-decode.php http://www.md5decrypter.com/ Eu tinha feito uma "encriptação" substituindo caracteres, porque não preciso de uma segurança alta nisso, só para esconder mesmo e não ficar de cara lá. Fiz o "encriptador" em JavaScript, e para "desencriptar" lá na função com o C. Só que não está funcionando muito bem... Não está pulando as linhas, ele buga no final das strings, etc... char* decrypt(char* string) { char uncrypt[1000] = ""; char letra[2]; int i; for(i=0; i<=strlen(string); i++) { sprintf(letra, "%.*s", 1, &string[i]); if(!strcmp(letra,"a")) strcpy(letra,";"); else if(!strcmp(letra,"b")) strcpy(letra,"i"); else if(!strcmp(letra,"c")) strcpy(letra,")"); else if(!strcmp(letra,"d")) strcpy(letra,"O"); else if(!strcmp(letra,"e")) strcpy(letra,"N"); else if(!strcmp(letra,"f")) strcpy(letra,"o"); else if(!strcmp(letra,"g")) strcpy(letra,"Y"); else if(!strcmp(letra,"h")) strcpy(letra,"("); else if(!strcmp(letra,"i")) strcpy(letra,"p"); else if(!strcmp(letra,"j")) strcpy(letra,"X"); else if(!strcmp(letra,"k")) strcpy(letra,"`"); else if(!strcmp(letra,"l")) strcpy(letra,":"); else if(!strcmp(letra,"m")) strcpy(letra,"2"); else if(!strcmp(letra,"n")) strcpy(letra,"Z"); else if(!strcmp(letra,"o")) strcpy(letra,"b"); else if(!strcmp(letra,"p")) strcpy(letra,"u"); else if(!strcmp(letra,"q")) strcpy(letra,"s"); else if(!strcmp(letra,"r")) strcpy(letra,"L"); else if(!strcmp(letra,"s")) strcpy(letra,"g"); else if(!strcmp(letra,"t")) strcpy(letra,"n"); else if(!strcmp(letra,"u")) strcpy(letra,"^"); else if(!strcmp(letra,"v")) strcpy(letra,"S"); else if(!strcmp(letra,"w")) strcpy(letra,"."); else if(!strcmp(letra,"x")) strcpy(letra,"M"); else if(!strcmp(letra,"y")) strcpy(letra,"q"); else if(!strcmp(letra,"z")) strcpy(letra,"K"); else if(!strcmp(letra,"A")) strcpy(letra,"3"); else if(!strcmp(letra,"B")) strcpy(letra,"~"); else if(!strcmp(letra,"C")) strcpy(letra,"a"); else if(!strcmp(letra,"D")) strcpy(letra,"W"); else if(!strcmp(letra,"E")) strcpy(letra,"8"); else if(!strcmp(letra,"F")) strcpy(letra,"P"); else if(!strcmp(letra,"G")) strcpy(letra,"R"); else if(!strcmp(letra,"H")) strcpy(letra,"t"); else if(!strcmp(letra,"I")) strcpy(letra,"C"); else if(!strcmp(letra,"J")) strcpy(letra,"J"); else if(!strcmp(letra,"K")) strcpy(letra,"T"); else if(!strcmp(letra,"L")) strcpy(letra,"w"); else if(!strcmp(letra,"M")) strcpy(letra,"r"); else if(!strcmp(letra,"N")) strcpy(letra,"1"); else if(!strcmp(letra,"O")) strcpy(letra,"d"); else if(!strcmp(letra,"P")) strcpy(letra,"m"); else if(!strcmp(letra,"Q")) strcpy(letra,"9"); else if(!strcmp(letra,"R")) strcpy(letra,"V"); else if(!strcmp(letra,"S")) strcpy(letra,","); else if(!strcmp(letra,"T")) strcpy(letra,"H"); else if(!strcmp(letra,"U")) strcpy(letra,"%"); else if(!strcmp(letra,"V")) strcpy(letra,"+"); else if(!strcmp(letra,"W")) strcpy(letra,"D"); else if(!strcmp(letra,"X")) strcpy(letra,"h"); else if(!strcmp(letra,"Y")) strcpy(letra,"@"); else if(!strcmp(letra,"Z")) strcpy(letra,"0"); else if(!strcmp(letra,"1")) strcpy(letra,"v"); else if(!strcmp(letra,"2")) strcpy(letra,"I"); else if(!strcmp(letra,"3")) strcpy(letra,"Q"); else if(!strcmp(letra,"4")) strcpy(letra,"j"); else if(!strcmp(letra,"5")) strcpy(letra,"U"); else if(!strcmp(letra,"6")) strcpy(letra,"A"); else if(!strcmp(letra,"7")) strcpy(letra,"4"); else if(!strcmp(letra,"8")) strcpy(letra,"7"); else if(!strcmp(letra,"9")) strcpy(letra,"]"); else if(!strcmp(letra,"0")) strcpy(letra,"c"); else if(!strcmp(letra,"(")) strcpy(letra,"G"); else if(!strcmp(letra,")")) strcpy(letra,"x"); else if(!strcmp(letra,"[")) strcpy(letra,"f"); else if(!strcmp(letra,"]")) strcpy(letra,"_"); else if(!strcmp(letra,"_")) strcpy(letra,"l"); else if(!strcmp(letra,",")) strcpy(letra,"/"); else if(!strcmp(letra,".")) strcpy(letra,"$"); else if(!strcmp(letra,"!")) strcpy(letra,"´"); else if(!strcmp(letra,"?")) strcpy(letra,"["); else if(!strcmp(letra,"-")) strcpy(letra,"!"); else if(!strcmp(letra,"+")) strcpy(letra,"B"); else if(!strcmp(letra,"%")) strcpy(letra,"z"); else if(!strcmp(letra,"@")) strcpy(letra,"5"); else if(!strcmp(letra,"/")) strcpy(letra,"?"); else if(!strcmp(letra,"$")) strcpy(letra,"k"); else if(!strcmp(letra,"`")) strcpy(letra,"-"); else if(!strcmp(letra,"´")) strcpy(letra,"F"); else if(!strcmp(letra,"~")) strcpy(letra,"y"); else if(!strcmp(letra,"^")) strcpy(letra,"E"); else if(!strcmp(letra,";")) strcpy(letra,"e"); else if(!strcmp(letra,":")) strcpy(letra,"6"); else if(!strcmp(letra," ")) strcpy(letra,"'"); else if(!strcmp(letra,"=")) strcpy(letra,"{"); else if(!strcmp(letra,"{")) strcpy(letra,"="); else if(!strcmp(letra,"}")) strcpy(letra," "); else if(!strcmp(letra,"'")) strcpy(letra,"}"); strcat(uncrypt,letra); } return uncrypt; } Compartilhar este post Link para o post Compartilhar em outros sites
_Isis_ 202 Denunciar post Postado Março 20, 2010 What does this tool do?MD5Decrypter.com allows you to input an MD5 hash and search for its decrypted state in our database. Tem cara de que o texto plano está cadastrado na base de dados do site, e não que desencripta o texto que você informar. Se você digitar uma string muito louca que não existe no banco deles na aba 'decrypt', não encontra nada. Mas se você digitar essa string na aba 'encrypt', aparentemente ele grava no bd e daí sim consegue retornar o texto plano na aba 'decrypt'. Tenho quase certeza de que o Base64 não é um sistema criptográfico. Ele não gera chave. E nem o RFC diz isso: http://tools.ietf.org/html/rfc4648 Base encoding of data is used in many situations to store or transfer data in environments that, perhaps for legacy reasons, are restricted to US-ASCII [1] data. E eu nunca soube de um sistema criptográfico que rejeite entradas. Implementations MUST reject the encoded data if it contains characters outside the base alphabet when interpreting base-encoded data, unless the specification referring to this document explicitly states otherwise. http://tools.ietf.org/html/rfc2045#section-6.8 The Base64 Content-Transfer-Encoding is designed to represent arbitrary sequences of octets in a form that need not be humanly readable. ('need not' != 'must not') Embora na wikipedia você leia 'Base64 is used to store passwords encrypted with crypt in the /etc/passwd', isso não quer dizer que o Base64 encripta (no sentido real da palavra) as senhas. http://www.numaboa.com/criptografia/codigos/codigos-abertos/492-base64 Compartilhar este post Link para o post Compartilhar em outros sites
RoM 0 Denunciar post Postado Março 20, 2010 Tá, mas eu só quero alguma coisa que modifique o texto original e eu possa converter ele depois... Desse jeito aí eu fiz a conversão dele no Javascript primeiro, e no programa usaria aquela função alí que postei acima para desconverter. Se eu pego minha função e rodo ela aqui funciona normal, a conversão: [Market]: Inicializando... [Market]: Sua assinatura expirou. Contate o suporte para renovar sua assinatura. Mas quando boto a função na lib, compilo ela e uso no programa, dá isso: [Market]: Inicializando... [Market]: Sua assinatura expirou. Contate o suporte para renovar sua assH¨↑ E logo depois desse "H¨↑" ele não dá a quebra de linha... Compartilhar este post Link para o post Compartilhar em outros sites
_Isis_ 202 Denunciar post Postado Março 20, 2010 Tamanho de buffer errado? String sem \0? É mais fácil você usar um depurador p/ descobrir o que é do que a gente tentar adivinhar sem o código. Compartilhar este post Link para o post Compartilhar em outros sites
RoM 0 Denunciar post Postado Março 20, 2010 Já corrigi, aumentei o tamanho do buffer... A função eu tinha postado alí em cima. Compartilhar este post Link para o post Compartilhar em outros sites
_Isis_ 202 Denunciar post Postado Março 20, 2010 Eu vi a função. Eu estava falando do resto do código. Só que tem um detalhe: você não está encriptando caracteres acentuados. Aproveitando, se os textos têm o mesmo tamanho, aloque o tamanho certo na função ao invés de ficar definindo o máximo na mão e esperar quebrar. Compartilhar este post Link para o post Compartilhar em outros sites