tincho   21-08-2022, 23:09
#1
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.

1 Saludo.
Shordi   22-08-2022, 08:43
#2
Que yo sepa, no existe.


Saludos

No podemos regresar
vuott   22-08-2022, 13:50
#3
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?...4#msg13654
(Añado también el archivo del código de Leo72)
Archivos adjuntos
.gz
clsHC256.class.tar.gz (Tamaño: 1.37 KB Descargas: 4)
Última modificación: 22-08-2022, 14:16 por vuott.

« Los horizontes perdidos nunca regresan. » (F. Battiato, 1983)

« Las ondas nunca regresan. » (Genesis: Ripples, 1976)

« Vita non suavis esse potest, nec Mors amara. »  (...vuott)
tincho   23-08-2022, 10:26
#4
(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[]?

1 Saludo.
vuott   23-08-2022, 14:40
#5
(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...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...tring?l=es
Última modificación: 03-11-2022, 13:55 por vuott.

« Los horizontes perdidos nunca regresan. » (F. Battiato, 1983)

« Las ondas nunca regresan. » (Genesis: Ripples, 1976)

« Vita non suavis esse potest, nec Mors amara. »  (...vuott)
tincho   03-11-2022, 00:42
#6
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[]

1 Saludo.
vuott   03-11-2022, 13:53
#7
(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()".

« Los horizontes perdidos nunca regresan. » (F. Battiato, 1983)

« Las ondas nunca regresan. » (Genesis: Ripples, 1976)

« Vita non suavis esse potest, nec Mors amara. »  (...vuott)
tincho   03-11-2022, 22:43
#8
(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.

1 Saludo.
vuott   05-11-2022, 15:44
#9
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. »

« Los horizontes perdidos nunca regresan. » (F. Battiato, 1983)

« Las ondas nunca regresan. » (Genesis: Ripples, 1976)

« Vita non suavis esse potest, nec Mors amara. »  (...vuott)
tincho   06-11-2022, 17:50
#10
(05-11-2022, 15:44)vuott escribió: Recibí la respuesta del autor de esa clase "clsHC256.class".
La pego aquí en el idioma original (italiano).

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:
 
Se declaran las variables:
[code]
Dim IV As New Byte[]
Dim chiave As String 
Dim P As Integer[1024]
Dim Q As Integer[1024]
Dim Counter2048 As Integer
 
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.

1 Saludo.
  
Usuarios navegando en este tema: 4 invitado(s)
Powered By MyBB, © 2002-2024 MyBB Group.
Made with by Curves UI.