Mensajes: 2,176
Temas: 99
Registro en: Dec 2013
Reputación:
42
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(sPassword, sMD5_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
Mensajes: 2,600
Temas: 33
Registro en: Oct 2013
Reputación:
36
16/08/2015, 04:16 PM
(Última modificación: 16/08/2015, 04:16 PM por RauliTop.)
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.
Mensajes: 2,176
Temas: 99
Registro en: Dec 2013
Reputación:
42
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
Mensajes: 538
Temas: 13
Registro en: Oct 2013
Reputación:
16
18/08/2015, 11:51 PM
(Última modificación: 18/08/2015, 11:52 PM por Milashkasiya.)
md5 es obsoleto en 1.8.3 - Usa hash_string.
Código PHP: new sMD5_Password[ 33 ] hash_string( sPassword, Hash_Md5, sMD5_Password, charsmax(sMD5_Password) )
Hi [R]ak
Mensajes: 2,176
Temas: 99
Registro en: Dec 2013
Reputación:
42
(18/08/2015, 11:51 PM)Milashkasiya escribió: md5 es obsoleto en 1.8.3 - Usa hash_string.
Código PHP: new sMD5_Password[ 33 ] hash_string( sPassword, Hash_Md5, sMD5_Password, charsmax(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
Mensajes: 1,764
Temas: 19
Registro en: Dec 2013
Reputación:
14
19/08/2015, 02:05 PM
(Última modificación: 19/08/2015, 02:05 PM por ErikMav94.)
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:type, output[], 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é)
Mensajes: 538
Temas: 13
Registro en: Oct 2013
Reputación:
16
(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_Password[ 33 ] hash_string( sPassword, Hash_Md5, sMD5_Password, charsmax(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
Mensajes: 4,637
Temas: 73
Registro en: Oct 2013
Reputación:
44
19/08/2015, 03:00 PM
(Última modificación: 19/08/2015, 03:40 PM por Neeeeeeeeeel.-.)
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.
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.
Mensajes: 713
Temas: 32
Registro en: Jul 2014
Reputación:
19
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 :/
Mensajes: 2,600
Temas: 33
Registro en: Oct 2013
Reputación:
36
20/08/2015, 07:07 AM
(Última modificación: 20/08/2015, 07:07 AM por RauliTop.)
(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
(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.
Mensajes: 4,637
Temas: 73
Registro en: Oct 2013
Reputación:
44
20/08/2015, 11:22 AM
(Última modificación: 20/08/2015, 11:29 AM por Neeeeeeeeeel.-.)
(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).
Mensajes: 713
Temas: 32
Registro en: Jul 2014
Reputación:
19
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.
Mensajes: 1
Temas: 0
Registro en: Jun 2017
Reputación:
0
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;
}
Mensajes: 4,637
Temas: 73
Registro en: Oct 2013
Reputación:
44
26/06/2017, 02:38 PM
(Última modificación: 26/06/2017, 02:43 PM por Neeeeeeeeeel.-.)
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
|