Componente gambas de md5sum - Versión para impresión +- Comunidad Gambas-es (https://gambas-es.org) +-- Foro: Gambas (https://gambas-es.org/forum-3.html) +--- Foro: Controles/Librerías/Componentes (https://gambas-es.org/forum-7.html) +--- Tema: Componente gambas de md5sum (/thread-998.html) |
Componente gambas de md5sum - tincho - 21-08-2022 Hola. En la terminal de Linux, como saben, se puede usar el comando checksum o sha512sum para crear sumas de verificación den archivos. md5sum filename > md5sums.txt ¿Como se puede obtener lo mismo pero dentro de gambas sin usar la shell o exec, es decir sin recurrir a la terminal? ¿Existe algún componente que lo haga? Le eche un vistazo a gb.crypt pero no parece servir para lo mismo. RE: Componente gambas de md5sum - Shordi - 22-08-2022 Que yo sepa, no existe. Saludos RE: Componente gambas de md5sum - vuott - 22-08-2022 De cualquier modo quisiera señalar este debate: https://www.gambas-it.org/smf/index.php?topic=1523.0 y tambien: https://www.gambas-it.org/smf/index.php?topic=1222.msg13654#msg13654 (Añado también el archivo del código de Leo72) RE: Componente gambas de md5sum - tincho - 23-08-2022 (22-08-2022, 13:50)vuott escribió: ...el archivo del código de Leo72 Lo descargue, intento usarlo y creo que la función (dentro de la clase) que debo usar es: [code] Pero... ¿Como consigo la variable InputData As Byte[] a partir de un archivo? y ¿Como logro una cadena de texto a partir de la variable OutputData As New Byte[]? RE: Componente gambas de md5sum - vuott - 23-08-2022 (23-08-2022, 10:26)tincho escribió: ¿Como consigo la variable InputData As Byte[] a partir de un archivo?Señalo esta pagina: https://www.gambas-it.org/wiki/index.php/Scrivere_in_un_vettore_i_dati_di_un_file (23-08-2022, 10:26)tincho escribió: ¿Como logro una cadena de texto a partir de la variable OutputData As New Byte[]? Tienes que usar el Metodo ".ToString()" del array de tipo Byte[ ]. https://gambaswiki.org/wiki/comp/gb/byte%5B%5D/tostring?l=es RE: Componente gambas de md5sum - tincho - 03-11-2022 He vuelto con este tema. Creo que ya obtengo InputData As Byte[] ¿Como obtengo los otros parámetros? count2048 As Integer Pp As Integer[] Qq As Integer[] RE: Componente gambas de md5sum - vuott - 03-11-2022 (03-11-2022, 00:42)tincho escribió: Como obtengo los otros parámetros? Intento escribir al autor de esa Clase clsHC256.class, para que él explique cómo usar la función específica "ProcessHC256()". RE: Componente gambas de md5sum - tincho - 03-11-2022 (03-11-2022, 13:53)vuott escribió: Intento escribir al autor de esa Clase clsHC256.class, para que él explique cómo usar la función específica "ProcessHC256()". Gracias. RE: Componente gambas de md5sum - vuott - 05-11-2022 Recibí la respuesta del autor de esa clase "clsHC256.class". La pego aquí en el idioma original (italiano). « Per capire come funziona quella... funzione e perché si chiama in quel modo bisogna prima sapere come opera l'algoritmo in questione. L'HC256 è un cifrario a flusso (stream-cipher) che opera creando un flusso continuo di byte pseudo-casuali con il quale viene cifrato il messaggio originale. Tecnicamente, l'HC-256 lavora con una chiave a 256 bit e con un IV (initialization vector) sempre a 256 bit. Internamente, consiste di 2 tabelle segrete P e Q generate a partire dalla chiave immessa dall'utente e composte ognuna da 1024 numeri interi a 32 bit. Ad ogni iterazione viene aggiornato 1 numero di ogni tabella: dopo 2048 iterazioni, tutti i numeri delle 2 tabelle sono stati aggiornati. Per tenere il punto uso una variabile contatore. La codifica e decofica si basano sullo stesso codice: viene generato un intero a 32 bit utilizzando una funzione di mappatura a 32 bit simile alla funzione di output del Blowfish. Alla fine del processo viene generata una funzione lineare di mascheramento a bit che è applicata per generare un intero a 32 bit di output. Utilizza anche 2 funzioni dell'SHA-256 ma sempre in abbinamento alle tabelle P e Q come fossero S-Box. Quindi, istanziata la classe: Dim cHC256 As New ClsHC256 Si dichiarano le variabili: Dim KeyHC256 As New Integer[] Dim IV As New Byte[] Dim chiave As String Dim P As Integer[1024] Dim Q As Integer[1024] Dim Counter2048 As Integer bisogna inizializzare lo stato interno dell'algoritmo: keyHC256 = cHC256.KeySetup(cv_String2Bytes(chiave), lunchiave, 256) iv.Resize(256 / 8) cHC256.IVsetup(keyhc256, iv, 256, p, q, Counter2048) "lunchiave" è la lunghezza in bit (si ottiene moltiplicando la lunghezza della stringa chiave per 8) "String2bytes" sono 2 funzioni che servono a trasformare la stringa di testo da cifrare o la chiave in un array di byte (da &00 a &ff). Una volta fatto questo si può passare a codificare i dati: String temp = cv_Bytes2String(cHC256.ProcessHC256(cv_String2Bytes(stringa_temp), Counter2048, p, q)) Anche qui "bytes2string" è una funzione che ritrasforma l'array di byte in una stringa. » RE: Componente gambas de md5sum - tincho - 06-11-2022 (05-11-2022, 15:44)vuott escribió: Recibí la respuesta del autor de esa clase "clsHC256.class". Gracias Vuott. Pongo aquí la traducción que hice por si a alguien le viene mejor. Para entender cómo funciona esa función y por qué se llama así, primero hay que saber cómo opera el algoritmo en cuestión. El HC256 es un cifrado de flujo que funciona creando un flujo continuo de bytes pseudoaleatorios con los que se cifra el mensaje original. Técnicamente, el HC-256 funciona con una clave de 256 bits y un IV (vector de inicialización) de 256 bits. Internamente, consta de 2 tablas secretas P y Q generadas a partir de la clave introducida por el usuario y cada una compuesta por 1024 enteros de 32 bits. En cada iteración, se actualiza 1 número de cada tabla: después de 2048 iteraciones, se han actualizado todos los números de las 2 tablas. Para mantener el punto utilizo una variable de contador. La codificación y la descodificación se basan en el mismo código: se genera un entero de 32 bits mediante una función de mapeo de 32 bits similar a la función de salida de Blowfish. Al final del proceso, se genera una función lineal de enmascaramiento de bits y se aplica para generar un entero de salida de 32 bits. También utiliza 2 funciones de SHA-256 pero siempre en conjunto con las tablas P y Q como si fueran S-Boxes. A continuación, instancie la clase: Código: el estado interno del algoritmo debe ser inicializado: [code] "lunchiave" (longitud) es la longitud en bits (se obtiene multiplicando la longitud de la cadena de claves por 8) "String2bytes" son 2 funciones que se utilizan para transformar la cadena de texto a cifrar o la clave en una matriz de bytes (&00 a &ff). Una vez hecho esto, se puede pasar a codificar los datos: [code] De nuevo, 'bytes2string' es una función que transforma la matriz de bytes de nuevo en una cadena. |