Recursive Function
#1
La hago corta, alguno me dice que re carajo con esta advertencia (Warning)
Código:
warning 233: recursive function "md5"
Código PHP:
static sMD5_Password[34];
md5(sPasswordsMD5_Password);
sMD5_Password[6] = EOS
Uso AMXX v1.8.3 ya que en otras versiones compila normal... Gracias de antemano!
Free agent - Vendo plugins, mods o apps del foro IPB (Invision community)
Contactarme vía Discord >>> AtselTV#8202
#2
Si solamente aparece en 1.8.3 te recomiendo postear el "bug" en alliedmodders a ver que te contesta Arkshine

Recuerda que 1.8.3 solo es versión de developers por ahora, yo no la utilizaría...
(17/04/2015, 03:36 PM)Neeeeeeeeeel.- escribió: No se va a volver a conectar a internet en toda su puta vida... nadie sube porno a mi foro y vive para contarlo.
#3
uff ultra paja. Pero cuando pueda lo haga, solamente quiero ponerle md5 a las contraseñas pero bueno xD. Si hay otra manera bienvenido sea. Y cuando pueda le publico eso en AM..
Free agent - Vendo plugins, mods o apps del foro IPB (Invision community)
Contactarme vía Discord >>> AtselTV#8202
#4
md5 es obsoleto en 1.8.3 - Usa hash_string.

Código PHP:
new sMD5_Password33 ]
hash_stringsPasswordHash_Md5sMD5_Passwordcharsmax(sMD5_Password) ) 
Hi [R]ak CrabCrab
#5
(18/08/2015, 11:51 PM)Milashkasiya escribió: md5 es obsoleto en 1.8.3 - Usa hash_string.

Código PHP:
new sMD5_Password33 ]
hash_stringsPasswordHash_Md5sMD5_Passwordcharsmax(sMD5_Password) ) 
Gracias, no sabìa de eso. Cumple la misma funciòn que md5 ?. O encripta de una forma diferente ?
Free agent - Vendo plugins, mods o apps del foro IPB (Invision community)
Contactarme vía Discord >>> AtselTV#8202
#6
amxmodx.inc

Código PHP:
/**
 * Calculates the MD5 keysum of a string.
 *
 * @param szString      String to calculate keysum of
 * @param md5buffer     Buffer to copy the MD5 hash to
 *
 * @return              Number of cells written to the buffer (always 32)
 */
#pragma deprecated Use hash_string() function. Also, see Hash_* constants.
native md5(const szString[], md5buffer[34]);
/**
 * Generate a hash value (message digest)
 *
 * @param string        String to be hashed.
 * @param type          Type of selected hashing algorithm. See Hash_* constants in amxconst.inc file.
 * @param output        Output string to store hash in.
 * @param outputSize    The maximum size of the output string to store hash in.
 *
 * @return              Number of written bytes.
 */
native hash_string(const string[], const HashType:typeoutput[], const outputSize); 

amxconst.inc

Código PHP:
/**
 * HashType constants
 * To be used on hash_file() and hash_string()
 */
enum HashType
{
    
Hash_Crc32 0,  // Provides CRC32 hashing
    
Hash_Md5,        // Provides MD5 hashing
    
Hash_Sha1,       // Provides SHA1 hashing
    
Hash_Sha256,     // Provides SHA256 hashing

    
Hash_Sha3_224,   // Provides SHA3 224 bit hashing
    
Hash_Sha3_256,   // Provides SHA3 256 bit hashing
    
Hash_Sha3_384,   // Provides SHA3 384 bit hashing
    
Hash_Sha3_512,   // Provides SHA3 512 bit hashing

    
Hash_Keccak_224// Provides Keccak 224 bit hashing
    
Hash_Keccak_256// Provides Keccak 256 bit hashing
    
Hash_Keccak_384// Provides Keccak 384 bit hashing
    
Hash_Keccak_512  // Provides Keccak 512 bit hashing
}; 

usando el HashType (Hash_Md5) teóricamente debería ser lo mismo (teóricamente porque nunca lo usé)
#7
(19/08/2015, 01:25 PM)CSAxel escribió:
(18/08/2015, 11:51 PM)Milashkasiya escribió: md5 es obsoleto en 1.8.3 - Usa hash_string.

Código PHP:
new sMD5_Password33 ]
hash_stringsPasswordHash_Md5sMD5_Passwordcharsmax(sMD5_Password) ) 
Gracias, no sabìa de eso. Cumple la misma funciòn que md5 ?. O encripta de una forma diferente ?
md5 y Hash_Md5 es igual, ademas tiene otros metodos de encriptacion como ya mencionaron arriba.
Hi [R]ak CrabCrab
#8
md5 es md5, siempre va a ser igual acá, en php, en pawn, en Pascal o en China.

Muy mala idea, aumenta mucho el riesgo de colisiones.
Código PHP:
sMD5_Password[6] = EOS

En criollo, una colisión es cuando dos strings dan el mismo resultado md5. Solo tomando los primeros 6 caracteres, ese riesgo aumenta MUCHO.

Hablando de passwords, lo que puede suceder es que dos passwords distintas, tengan los mismos 6 caracteres inciales.

Doy un ejemplo ficticio para que se entienda:
La clave "holapepe" tiene md5 "c44a793167570071542c72b958dbeaf1"
Y supongamos que la clave "MeLlamoGerardo" tiene md5 "c44a79ac199952b415dee2a0bd7e317d"

Si bien son dos hash distintos, los primeros 6 caracteres son iguales, entonces tenemos dos claves con las que podemos entrar a una misma cuenta.

Para que quede claro, existen colisiones completas... es decir, dos strings distintos que tengan los mismos 32 caracteres de md5 pero es muuuuuy raro, si reducís el número de caracteres lo que estás haciendo es aumentando muchísimo la probabilidad de que suceda.

PD: md5 se ha declarado como inseguro hace tiempo, yo lo reemplazaría por sha256.
[Imagen: paypalqr.png]
#9
Lee varias veces lo que dijo Neeel hasta que te lo memorices por que es muy importante!

Te recomiendo encriptar con distintos métodos y luego finalmente hacerlo con md5, entonces le complicaras la vida al que tenga que "crackear" esas contraseñas, muajaja.
Te diría otras prácticas buenas para que sea verdaderamente difícil que te "crackeen" las contraseñas pero debo irme :/
#10
(19/08/2015, 10:27 PM)LuKks escribió: Lee varias veces lo que dijo Neeel hasta que te lo memorices por que es muy importante!

Te recomiendo encriptar con distintos métodos y luego finalmente hacerlo con md5, entonces le complicaras la vida al que tenga que "crackear" esas contraseñas, muajaja.
Te diría otras prácticas buenas para que sea verdaderamente difícil que te "crackeen" las contraseñas pero debo irme :/
Leí algo de que encriptar sobre encriptado no sirve de nada, que es simplemente un burrada...

La mejor opción, es antes de encriptar (ya sea md5 o sha o cualquier otro...) hacer tu encriptado propio. Imagina que tienes la pass: hola, pues con tu encriptado propio la conviertes en: aloh y luego la encriptas.
Así, si te desencriptan la clave encontrarán aloh pero no les servirá de nada, deberán saber que tú antes la encriptaste...
Más que invertir el orden de las letras yo preferiría hacer sustitución de letras, cada letra será otra letra, Por ejemplo:
h -> e
o -> s
l -> j
a -> c
Tu encriptación sería esjc y después la pasas a md5.

pero recuerda que tendrás que desencriptarla para utilizarla después, primero con md5 y luego con tu sistema propio Whatever
(17/04/2015, 03:36 PM)Neeeeeeeeeel.- escribió: No se va a volver a conectar a internet en toda su puta vida... nadie sube porno a mi foro y vive para contarlo.
#11
(19/08/2015, 10:27 PM)LuKks escribió: Lee varias veces lo que dijo Neeel hasta que te lo memorices por que es muy importante!

Te recomiendo encriptar con distintos métodos y luego finalmente hacerlo con md5, entonces le complicaras la vida al que tenga que "crackear" esas contraseñas, muajaja.
Te diría otras prácticas buenas para que sea verdaderamente difícil que te "crackeen" las contraseñas pero debo irme :/
Encriptar así, también aumenta el riesgo de colisiones.

La opción que propone RauliTop es buena y también existe otra que también aumenta la seguridad y no genera mayor probabilidad de colisiones. Que es utilizar "salts".

Lo mas simple para un salt, es agregar un texto fijo a todas las claves.

Por ejemplo, la clave es "hola" y el salt fijo (para todos) es "asd"
Código PHP:
$password 'hola'//cargo password del user en la variable
$salt 'asd'//fijo, no cambia

$hash hash('sha256'$password.$salt); //concateno $password y $salt y los encripto juntos 

Después, opciones más sofisticadas y seguras sería asignarle un salt random a cada usuario y almacenar ese string en la base (MyBB hace eso, por ejemplo).
[Imagen: paypalqr.png]
#12
Lo que quise decir fue "hashear" y "re-hashear" en lugar de encriptar.

Deben crear funciones para descubrir características únicas de una cadena de texto, hace poco hice este listado para luego hacer lo que acabo de decir:

La cantidad de números.
La cantidad de veces que se repite o esta un numero.
La cantidad de letras.
La cantidad de símbolos comunes.
La cantidad de símbolos no comunes.
La cantidad de letras repetidas.
La cantidad de letras minúsculas.
La cantidad de letras mayúsculas.
La cantidad de caracteres totales.
La cantidad de veces que se repite una letra.
La cantidad de números que no tiene esta cadena.
La cantidad de letras que no contiene esta cadena.
La cantidad de números pares que contiene esta cadena.
La cantidad de números impares que contiene esta cadena.
La cantidad de vocales que contiene esta cadena.
La cantidad de no vocales que contiene esta cadena.
La cantidad de espacios.
La cantidad de letras con acentos.
La cantidad de letras sin acentos.
Si el total de caracteres es par.
Si tiene mas números que letras y viceversa.
La cantidad de vocales seguidas que tiene.
Y hay más...

Usando este conjunto de características de distintas formas para generar sales e ir "re-hasheando" me parece una buena idea. Hablando sobre webs, lo ideal sería realizar esto en javascript para "hashear" antes de enviar el formulario y listo. Aunque todos sepan como "hasheas" las contraseñas, nadie podrá crackear nada ya que la única forma de obtener cada características es sabiendo la contraseña real que solo el usuario conoce. Esto obvio si se usan de forma eficiente las características.
Otra forma de encriptar es utilizando la forma que uso Destro en su "Simple encripyt/decrypt" y podrían usar como numkey alguna/s características de la cadena como la suma de la cantidad de vocales, letras mayúsculas y números.

Mas tarde o en estos días haré una publicación creando estas funciones en amxx y php e intentaré en javacript pero no creo poderlo hacer de forma eficiente ya que no tengo ningún conocimiento.
#13
I have a problem similar to my rank, can you help me? I am using amxx 1.8.3 and this failed to compile

// D: \ 12.06.17 \ Downloads \ compiler 1.8.3 dev4753 \ amxmodx \ scripting \ army_nvault.sma (58): warning 233: recursive function "md5"

Code below:

/*
* Модуль для Army System (EA) | A4U+/n
* Сохранение данных игроков по nVault, без временной метки.
*/

#include amxmodx
#include nvault
#include army_system

new g_iSteam[33][35];

public plugin_init () register_plugin("Army nVault (EA)", "1.0", "OverGame");

public client_putinserver (iPlayer) {
/* Получаем стим ид игрока (в authoriz нету смысла, потому что иногда не получает) */
get_user_authid (iPlayer, g_iSteam[iPlayer], 34);

/* Регистрируем переменные/массивы и открываем наш файл */
new szGetting[64], iTimeStramp, iVault = nvault_open ("army_system");

/* Получаем строчку из файла, под ключ */
new iStatus = nvault_lookup (iVault, UTIL_Encrypt(g_iSteam[iPlayer]), szGetting, 63, iTimeStramp);

if (iStatus) {
/* Получаем данные */
new szParams[3][10];
parse (szGetting, szParams[0], 9, szParams[1], 9, szParams[2], 9);

army_user_level (iPlayer, PAR_SET, str_to_num(szParams[0]));
army_user_exp (iPlayer, PAR_SET, str_to_num(szParams[1]));
army_user_bonus (iPlayer, PAR_SET, str_to_num(szParams[2]));
}
else {
/* Если данные не пришли */
army_user_level (iPlayer, PAR_SET, 0);
army_user_exp (iPlayer, PAR_SET, 0);
army_user_bonus (iPlayer, PAR_SET, 0);
}

/* Закрываем файл */
nvault_close (iVault);
}

public client_disconnect (iPlayer) {
/* Регистрируем переменные/массивы и открываем наш файл */
new szSave[25], iVault = nvault_open ("army_system");
format (szSave, 24, "%d %d %d", army_user_level(iPlayer), army_user_exp(iPlayer), army_user_bonus(iPlayer));

/* Задаем параметры и заносим все под ключ, после закрываем файл */
nvault_pset (iVault, UTIL_Encrypt(g_iSteam[iPlayer]), szSave);
nvault_touch(iVault, UTIL_Encrypt(g_iSteam[iPlayer]), -1);

nvault_close (iVault);
}

stock UTIL_Encrypt (const szText[]) {
new szEncrypted[34];
md5 (szText, szEncrypted);

return szEncrypted;
}
#14
The compilation did not fail, that's just a warning message. You should use the new hash_string function.

Btw, tihs is a SPANISH ONLY community. If you are looking for english support, please visit https://forums.alliedmods.net
[Imagen: paypalqr.png]


Salto de foro:


Usuarios navegando en este tema: 1 invitado(s)