22.07.2013, 09:42
Introduзгo rбpida: eu decidi fazer um tutorial sobre criptografia,
sim, eu pretendo explicar como funciona e fazer aplicaзхes em cуdigo,
mas no mais eu vim para dar DICAS que podem ser ъtil ao 'pessoal' de cada um,
quando se trata de seus servidores/arquivos.
Нndice:sim, eu pretendo explicar como funciona e fazer aplicaзхes em cуdigo,
mas no mais eu vim para dar DICAS que podem ser ъtil ao 'pessoal' de cada um,
quando se trata de seus servidores/arquivos.
- O que й ?
- Como funciona ?
- Exemplos & aplicaзхes
- Dicas
--------------------------------------------------------
O que й ?Muito bem, eu costumo usar o significado cientнfico ou idealizado pelos primeiros habituados da funзгo, pois se eu for falar de outra forma seria algo pessoal e do meu ponto de vista.
Criptografia: й o estudo dos princнpios e tйcnicas pelas quais a informaзгo pode ser transformada da sua forma original para outra ilegнvel, de forma que possa ser conhecida apenas por seu destinatбrio (detentor da "chave secreta"), o que a torna difнcil de ser lida por alguйm nгo autorizado.
No cotidiano dos 'scripters' tem sido utilizado para dificultar a legibilidade das senhas que sгo impostas
pelos jogadores quando se cadastram nos servidores.
No meu cotidiano eu uso para dificultar a legibilidade de qualquer coisa que seja informaзгo/dado relacionado ao meu projeto, quanto nгo estгo alocados em um banco de dados.
Como funciona ?Criptografia: й o estudo dos princнpios e tйcnicas pelas quais a informaзгo pode ser transformada da sua forma original para outra ilegнvel, de forma que possa ser conhecida apenas por seu destinatбrio (detentor da "chave secreta"), o que a torna difнcil de ser lida por alguйm nгo autorizado.
No cotidiano dos 'scripters' tem sido utilizado para dificultar a legibilidade das senhas que sгo impostas
pelos jogadores quando se cadastram nos servidores.
No meu cotidiano eu uso para dificultar a legibilidade de qualquer coisa que seja informaзгo/dado relacionado ao meu projeto, quanto nгo estгo alocados em um banco de dados.
Existem alguns scripts prй-definidos e criados por desenvolvedores veteranos que sгo em muitos casos,
utilizados por boa parte do fуrum que nгo tem um conhecimento apurado sobre isso.
Os mesmos consistem em multiplicar/somar, dividir/subtrair dos caracteres, assim fazendo uso da codificaзгo da tabela ASCII.
Vejamos um exemplo com multiplicaзгo/divisгo:
Vejamos os valores na tabela ascii e seus respectivos sнmbolos:
Alfabeto maiusculo(ASCII codes)
Alfabeto minusculo(ASCII codes)
Agora vamos supor que multiplicamos cada valor da 'string' por 2:
Olhando pelo resultado ficou meio difнcil de ler, mas essa й a intenзгo, apenas o dono/scripter
deve obter acesso a informaзгo.
Agora a questгo й, como retornar essa string ao valor normal ?
Atualmente ela estб assim: "«КППК┬▄"
Pela lуgica, se multiplicamos todos os indexes do vetor por 2, entгo devemos dividir ambos por 2 agora,
para obtermos o resultado antigo: "Willian"
Exemplos & aplicaзхes:utilizados por boa parte do fуrum que nгo tem um conhecimento apurado sobre isso.
Os mesmos consistem em multiplicar/somar, dividir/subtrair dos caracteres, assim fazendo uso da codificaзгo da tabela ASCII.
Vejamos um exemplo com multiplicaзгo/divisгo:
Код:
new string[] = "Willian"; //string agora й um vetor que contйm 7 posiзхes(0-6) //Vamos fazer um split manual nela e ver como isso funciona. string[0] = 'W'; string[1] = 'i'; string[2] = 'l'; string[3] = 'l'; string[4] = 'i'; string[5] = 'a'; string[6] = 'n';
Alfabeto maiusculo(ASCII codes)
Код:
65= A 66= B 67= C 68= D 69= E 70= F 71= G 72= H 73= I 74= J 75= K 76= L 77= M 78= N 79= O 80= P 81= Q 82= R 83= S 84= T 85= U 86= V 87= W 88= X 89= Y 90= Z
Код:
97= a 98= b 99= c 100= d 101= e 102= f 103= g 104= h 105= i 106= j 107= k 108= l 109= m 110= n 111= o 112= p 113= q 114= r 115= s 116= t 117= u 118= v 119= w 120= x 121= y 122= z
Код:
string[0] = 'W' * 2; string[1] = 'i' * 2; string[2] = 'l' * 2; string[3] = 'l' * 2; string[4] = 'i' * 2; string[5] = 'a' * 2; string[6] = 'n' * 2; resultado: string[0] = '«'; string[1] = 'К'; string[2] = 'П'; string[3] = 'П'; string[4] = 'К'; string[5] = '┬'; string[6] = '▄'; //Resultado nгo й 100%, usei valores "fictнcios" para demonstraзгo.
deve obter acesso a informaзгo.
Agora a questгo й, como retornar essa string ao valor normal ?
Atualmente ela estб assim: "«КППК┬▄"
Pela lуgica, se multiplicamos todos os indexes do vetor por 2, entгo devemos dividir ambos por 2 agora,
para obtermos o resultado antigo: "Willian"
Agora estarei citando um pouco mais na prбtica, existem atualmente exemplos funcionais e bons
para criptografar nossas informaзхes.
Ex1:
Ex2:
Este ultimo exemplo complica um pouco mais, pois vocк estarб multiplicando os valores uma vez por 2, uma por 3, e etc..(2, 3)
Bom estas sгo as prбticas mais comuns que se vк, sгo boas ? sim, como exemplos...
Dicas:para criptografar nossas informaзхes.
Ex1:
pawn Код:
new gCript[128];
stock cript(str[])
{
for (new i = 0; i < strlen(str); ++i) //iremos rodar um loop, para facilitar nosso trabalho.
{
str[i] *= 2; //aqui iremos por em prбtica no exemplo anterior, iremos multiplicar os valores por 2
}
strcat(gCript, str);
}
stock uncript()
{
for (new i = 0; i < strlen(gCript); ++i) gCript[i] /= 2;
return gCript;
}
public OnGameModeInit()
{
new teste[] = "Willian";
cript(teste);
printf(teste);
teste[0] = '\0';
strcat(teste, uncript());
printf(teste);
return 1;
}
pawn Код:
stock cript_2(s[])
{
new i, j;
for (i = 0, j = 2; i < strlen ( s ); ++i, ++j)
{
if (j == 4) j = 2 ; //Vamos fazer com que a multiplicaзгo fique variando entre 2, 3
s [ i ] *= j ;
}
}
stock uncript_2(s[])
{
new i, j;
for (i = 0, j = 2; i < strlen ( s ); ++i, ++j)
{
if (j == 4) j = 2;
s [ i ] /= j;
}
}
public OnGameModeInit()
{
new teste[] = "Willian";
cript_2(teste);
printf(teste);
uncript_2(teste);
printf(teste);
return 1;
}
Bom estas sгo as prбticas mais comuns que se vк, sгo boas ? sim, como exemplos...
Como eu citei a cima, as aplicaзхes sгo boas como exemplos, como exemplos...
Veja bem, como diz o prуprio conceito de criptografia: "de forma que possa ser conhecida apenas por seu destinatбrio", entгo a dica mais valiosa que posso passar para vocкs й, a nгo ser que o cуdigo seja muito dinвmico, recomendo que vocк estude por estes exemplos, mas que utilize uma metodologia de criptografia pessoal(feita por vocк), pois assim piora as coisas pro lado de quem quer acessar, com certeza.
Conclusгo:Veja bem, como diz o prуprio conceito de criptografia: "de forma que possa ser conhecida apenas por seu destinatбrio", entгo a dica mais valiosa que posso passar para vocкs й, a nгo ser que o cуdigo seja muito dinвmico, recomendo que vocк estude por estes exemplos, mas que utilize uma metodologia de criptografia pessoal(feita por vocк), pois assim piora as coisas pro lado de quem quer acessar, com certeza.
O conceito й simples, opiniгo pessoal: й vocк saber uma forma sua de trocar os caracteres, que tambйm contenha um 'reverse' para vocк ter acesso a informaзгo limpa.
Espero que seja ъtil a informaзгo, se tiverem dъvidas deixem ai que discutimos nos comentбrios.
--------------------------------------------------------
Crйditos: Willian Luigi (© code.me - 2013.1)
Espero que seja ъtil a informaзгo, se tiverem dъvidas deixem ai que discutimos nos comentбrios.
--------------------------------------------------------