Generacion de ID de llave publica

Iniciado por AlbertoBSD, 10 Abril 2016, 16:01 PM

0 Miembros y 1 Visitante están viendo este tema.

AlbertoBSD

Buen dia.

¿Cual es la mejor forma de generar un ID?

Les dejo mi metodo y si ustedes tienen otro podria ser muy didactivo explicarlo por aqui

En el proyecto en el que estoy trabajando necesita generar un ID por usuario que instale la aplicacion.

-Muiltiplataforma
-Comunicacion cifrada end-to-end (Lo que esta de moda)

En fin el programa genera  un unico par de claves RSA para la criptografia asimetrica y genero llaves aleatorias para la criptografia simetrica en fin...

Genero un sha512 iterativo N cantidad de veces (mas de 4000) del archivo de la clave publica y este devuelve 64 bytes. Esta es mi ID del usuario y en teoria  no deberia de repetirse nuca...  :rolleyes: :rolleyes: :rolleyes: :rolleyes:

Tal como lei en el documento de whatsapp ellos hacen una conversion solo de los ultimos 30 bytes de la clave y luego pasan cada 5 bytes a un entero sin signo y a ese entero le sacan modulo 100000.

Yo por mi parte copio de 8 en 8 bytes al entero sin signo:


int main() {
int j;
unsigned char *temp;
unsigned long long t;
temp = md_file(GCRY_MD_SHA512,"llavePublica");
j = 0;
printf("ID: ");
while(j < 64) {
printf("%.2x",temp[j++]);
}
printf("\n");
printf("long long :%i\n",sizeof(unsigned long long));
j = 0;
t = 0;
while(j < 8) {
memcpy(&t,temp + (j*8),8);
printf("%llu\n",t);
t = 0;
j++;
}
free(temp);
}


Salida:


ID: d97a302e486bd15f55d4a2e6f7eba511042b0ee4ae118596584393e002103dd65e9d1c822963d945e17d4c24d9b7b6ad0fd54a7a03acea32bf899e22c7c0576b
long long :8
6904417661492427481
1271681919760913493
10846094720439823108
15437512702239654744
5033163088490962270
12517394357567651297
3668933977383294223
7734862846543956415
Donaciones
1Coffee1jV4gB5gaXfHgSHDz9xx9QSECVW