Autore Topic: [RISOLTO] SHA-256  (Letto 5903 volte)

Offline swsooue

  • Gamberetto
  • *
  • Post: 24
    • Mostra profilo
[RISOLTO] SHA-256
« il: 24 Luglio 2010, 14:41:13 »
Ciao,
sto usando Ubuntu da poco tempo e oggi ho installato GAMBAS 2.19 e inizio ora a fare in primi passi.

Ho notevole esperienza in Visual Basic 6 per cui non sono proprio alle prime armi con il linguaggio BASIC.

Volevo per prima cosa scrivere un piccolo programmino per il calcolo del SHA-256 e mi stavo chiedendo dove posso trovare infomrazioni su come implementare SHA-256 nel mio programma.

In VB6 usavo delle DLL esterne o dei OCX (oppure si trovavano sorgenti in VB6) per implementare queste cosa, ma per GAMBAS come posso fare ??

Ho vercato su Google con le parole "SHA-256 GAMBAS" ma non ha trovato niente di interessante.

Grazie per l'aiuto
Gigi
« Ultima modifica: 31 Luglio 2010, 12:18:22 da swsooue »

Offline ealmuno

  • Maestro Gambero
  • ****
  • Post: 388
    • Mostra profilo
    • http://www.ealmuno.com
Re: SHA-256
« Risposta #1 il: 24 Luglio 2010, 20:27:05 »
da quello che ho trovato in internet è un metodo di crittografia. Non credo esista già, ma qui nel forum abbiamo un esperto di crittografia, lascio rispondere al lui.
il mio nuovo sito : ealmuno.com

Offline Ceskho

  • Amministratore
  • Senatore Gambero
  • *****
  • Post: 3.778
  • Vi Veri Veniversum Vivus Vici
    • Mostra profilo
    • Pagina Personale
Re: SHA-256
« Risposta #2 il: 24 Luglio 2010, 20:44:13 »

Ciao,
sto usando Ubuntu da poco tempo e oggi ho installato GAMBAS 2.19 e inizio ora a fare in primi passi.

Ho notevole esperienza in Visual Basic 6 per cui non sono proprio alle prime armi con il linguaggio BASIC.

Volevo per prima cosa scrivere un piccolo programmino per il calcolo del SHA-256 e mi stavo chiedendo dove posso trovare infomrazioni su come implementare SHA-256 nel mio programma.

In VB6 usavo delle DLL esterne o dei OCX (oppure si trovavano sorgenti in VB6) per implementare queste cosa, ma per GAMBAS come posso fare ??

Ho vercato su Google con le parole "SHA-256 GAMBAS" ma non ha trovato niente di interessante.

Grazie per l'aiuto
Gigi


Se esiste una libreria gestibile da linea di comando del terminale allora puoi usare l'istruzione SHELL....se esiste una libreria implimentabile in qualche altro linguaggio allora devi includerla con EXTERN.

Offline md9327

  • Moderatore
  • Senatore Gambero
  • *****
  • Post: 2.840
    • Mostra profilo
Re: SHA-256
« Risposta #3 il: 26 Luglio 2010, 10:15:56 »
...questo per dire che puoi chiamare funzioni o eseguibili del sistema operativo...

A meno che tu non voglia creare ex-novo un'apposita libreria a scopo didattico, penso sia inutile che ti uccidi visto che esistono già gli strumenti nel tuo s.o., basta solo chiamarli con gli opportuni criteri, e leggere i valori di ritorno da Gambas.

A "ceskoooooo", ma te voi spiega mejo ?

Offline swsooue

  • Gamberetto
  • *
  • Post: 24
    • Mostra profilo
Re: SHA-256
« Risposta #4 il: 27 Luglio 2010, 08:44:28 »
...questo per dire che puoi chiamare funzioni o eseguibili del sistema operativo...

A meno che tu non voglia creare ex-novo un'apposita libreria a scopo didattico, penso sia inutile che ti uccidi visto che esistono già gli strumenti nel tuo s.o., basta solo chiamarli con gli opportuni criteri, e leggere i valori di ritorno da Gambas.

A "ceskoooooo", ma te voi spiega mejo ?

Quindi mi stai dicendo che la SHA-256 la posso calcolare usando direttamente una funzione del SO ??

Interessante.

Spiega spiega, oppure dammi dei link dove trovare queste informazioni

Grazie milleeeeeeeeeeeee   8)
Gigi

Offline Ceskho

  • Amministratore
  • Senatore Gambero
  • *****
  • Post: 3.778
  • Vi Veri Veniversum Vivus Vici
    • Mostra profilo
    • Pagina Personale
Re: SHA-256
« Risposta #5 il: 27 Luglio 2010, 09:11:25 »
...questo per dire che puoi chiamare funzioni o eseguibili del sistema operativo...

A meno che tu non voglia creare ex-novo un'apposita libreria a scopo didattico, penso sia inutile che ti uccidi visto che esistono già gli strumenti nel tuo s.o., basta solo chiamarli con gli opportuni criteri, e leggere i valori di ritorno da Gambas.

A "ceskoooooo", ma te voi spiega mejo ?

Quindi mi stai dicendo che la SHA-256 la posso calcolare usando direttamente una funzione del SO ??

Interessante.

Spiega spiega, oppure dammi dei link dove trovare queste informazioni

Grazie milleeeeeeeeeeeee   8)
Gigi


Se il sistema lo prevede puoi farlo. Devi utilizzare l'istruzione SHELL. Ti invito a cercare nel forum argomenti circa tale istruzione (ampiamente e abbondantemente trattata) e di tornare qui qualora tu abbia dubbi.

Offline swsooue

  • Gamberetto
  • *
  • Post: 24
    • Mostra profilo
Re: SHA-256
« Risposta #6 il: 27 Luglio 2010, 12:20:26 »
Se il sistema lo prevede puoi farlo. Devi utilizzare l'istruzione SHELL. Ti invito a cercare nel forum argomenti circa tale istruzione (ampiamente e abbondantemente trattata) e di tornare qui qualora tu abbia dubbi.

Ciao Ceskho e grazie degli aiuti.

L'istruzione SHELL penso sia come quella su Visual Basic (linguaggio che conosco molto bene) e che mi permette di eseguire dei programmi esterni, da dato che md9327 mi dice che la funzione SHA-256 esiste già nel sistema operativo, credo sia sufficiente dichiararla con un bel PUBLIC FUNCTION LIB...... come facevo in Visual Basic e chiamare direttamente l'API voluta.
Mi sembrava di capire che anche in GAMBAS2 è possibile fare questa cosa, ma il problema, per uno all'inizio come me, è spulciare tra le infinite routine delle API e trovare quella giusta.
C'è un sito con la documentazione delle API di Ubuntu ??


Offline Ceskho

  • Amministratore
  • Senatore Gambero
  • *****
  • Post: 3.778
  • Vi Veri Veniversum Vivus Vici
    • Mostra profilo
    • Pagina Personale
Re: SHA-256
« Risposta #7 il: 27 Luglio 2010, 12:29:54 »
Come ho già detto l'istruzione che ti serve potrebbe essere SHELL...ti ho indicato di cercare nel forum perchè è un argomento trattatissimo. SHELL ti permette di eseguire all'interno di Gambas delle istruzione come se tu le scrivessi ed eseguissi nel terminale. Hai provato e cercato come ti avevo detto?

Offline md9327

  • Moderatore
  • Senatore Gambero
  • *****
  • Post: 2.840
    • Mostra profilo
Re: SHA-256
« Risposta #8 il: 27 Luglio 2010, 12:58:52 »
Nei s.o. Linux di solito vengono installati md5sum e sha1sum per, appunto, calcolare le checksum di file e dischi (es. un cd).

Di solito, a riga dicomando, basta dare un "sha1sum <file>", e il ritorno è il valore calcolato.

Se è questo quello che devi fare, basta chiamare lo script da Gambas e leggere il valore di ritorno. Questo appunto con l'istruzione SHELL di Gambas.

Sul come funziona SHELL, e come gestire il collegamento, nel forum c'è già parecchia roba utile, come accennato anche da Cesko.

Come ultimo, domanda su quello che non comprendi...

Bye

Offline swsooue

  • Gamberetto
  • *
  • Post: 24
    • Mostra profilo
Re: SHA-256
« Risposta #9 il: 27 Luglio 2010, 13:18:13 »
Nei s.o. Linux di solito vengono installati md5sum e sha1sum per, appunto, calcolare le checksum di file e dischi (es. un cd).

Di solito, a riga dicomando, basta dare un "sha1sum <file>", e il ritorno è il valore calcolato.

Se è questo quello che devi fare, basta chiamare lo script da Gambas e leggere il valore di ritorno. Questo appunto con l'istruzione SHELL di Gambas.

Sul come funziona SHELL, e come gestire il collegamento, nel forum c'è già parecchia roba utile, come accennato anche da Cesko.

Come ultimo, domanda su quello che non comprendi...

Bye

Ora ho capito, grazie, pensavo che SHA-256 era un'API e invece è da riga di comando.

Un ringraziamento anche a Ceskho, anche se è sempre un po' criptyco quando spiega   ;D  ;D

Gigi

Offline Ceskho

  • Amministratore
  • Senatore Gambero
  • *****
  • Post: 3.778
  • Vi Veri Veniversum Vivus Vici
    • Mostra profilo
    • Pagina Personale
Re: SHA-256
« Risposta #10 il: 27 Luglio 2010, 13:21:47 »
Nei s.o. Linux di solito vengono installati md5sum e sha1sum per, appunto, calcolare le checksum di file e dischi (es. un cd).

Di solito, a riga dicomando, basta dare un "sha1sum <file>", e il ritorno è il valore calcolato.

Se è questo quello che devi fare, basta chiamare lo script da Gambas e leggere il valore di ritorno. Questo appunto con l'istruzione SHELL di Gambas.

Sul come funziona SHELL, e come gestire il collegamento, nel forum c'è già parecchia roba utile, come accennato anche da Cesko.

Come ultimo, domanda su quello che non comprendi...

Bye

Un ringraziamento anche a Ceskho, anche se è sempre un po' criptyco quando spiega   ;D  ;D


Tieni presente che devo leggermi tutti i post che vengono pubblicati...se dovessi riscrivere delle cose che comunque sono già state ampiamente trattate finirei con il passare le giornate sul forum.... ;)

Offline swsooue

  • Gamberetto
  • *
  • Post: 24
    • Mostra profilo
[Risolto] Re: SHA-256
« Risposta #11 il: 27 Luglio 2010, 14:00:57 »
Tieni presente che devo leggermi tutti i post che vengono pubblicati...se dovessi riscrivere delle cose che comunque sono già state ampiamente trattate finirei con il passare le giornate sul forum.... ;)

Me lo immagino, ma non preoccuparti, non era una critica  :P

Comunque ci sono arrivato !!  :)

Ecco qui:

DIM Vs AS String

SHELL "echo -n '\x61\x62\x63'|sha256sum" WAIT TO Vs

Grazie mille a tutti
Gigi


P.S. una volta risolto il problema coma faccio per far apparire [Risolto] davanti al topic ??

« Ultima modifica: 27 Luglio 2010, 14:03:37 da swsooue »

Offline swsooue

  • Gamberetto
  • *
  • Post: 24
    • Mostra profilo
Re: SHA-256
« Risposta #12 il: 27 Luglio 2010, 14:20:09 »

Non volevo usare SHELL e adesso ho anche avuto la conferma  :'(

Per calcolare 100.000 hash usando SHA-256 in un programma che avevo fatto in Visual Basic su Windows, utilizzando la SHA-256.DLL ci impiegava circa 10 secondi, su Gambas dopo 40 secondi era arrivato a 30.000 hash calcolati e quindi l'ho fermato.

Penso che la SHELL vada bene per tantissime cose ma in fatto di velocità ho avuto conferma che non è buona.

Volevo anche capire se la lentezza è solo data dalla SHELL o se è anche Gambas lento.
Su Windows il Visual Basic non è il massimo della velocità, anzi è uno tra i linguaggi più lenti, ma Gambas è definito un linguaggio abbastanza veloce oppure lento come il Visual Basic ??
Chiaro che se programmo in C++ la velocità è (penso) molto più alta, ma vorrei capire un paragone con Gambas, se mi conviene iniziare a studiarmelo o se mi conviene direttamente studiarmi il C++.

Grazie ancora per la vostra pazienza,
Gigi

Offline Ceskho

  • Amministratore
  • Senatore Gambero
  • *****
  • Post: 3.778
  • Vi Veri Veniversum Vivus Vici
    • Mostra profilo
    • Pagina Personale
Re: SHA-256
« Risposta #13 il: 27 Luglio 2010, 14:34:33 »
Andiamo per gradi e cerchiamo di fare ordine.

Chiamare un comando shell all'interno di gambas significa aggiungere al normale svolgimento del programma una serie di "passi" o step che richiedono comunque un certo tempo. Se ovviamente metti a paragone una stessa funzione interna di gambas ed una eseguita da shell all'interno dello stesso vedrai che la seconda è molto più lenta anche se svolgono lo stesso lavoro poichè richiede dei passaggi in più.

Questa lentezza non è intrinseca ed imputabile a gambas ma è dovuta al metodo che tu stai usando per raggiungere il tuo scopo. La lentezza è dovuta al fatto che Gambas deve interrogare la shell, attendere che finisca e poi proseguire fino al passo successivo. Capirai benissimo che ciò richiede del tempo.

Gambas è un linguaggio interpretato e pecca in velocità tanto quanto gli altri linguaggi interpretati. Passare per l'interprete significa "strozzare" la velocità del codice.

Non si possono paragonare C++ e Gambas poichè sono due cose diverse. E' ovvio che il primo sarà sensibilmente più veloce ma ti sfido a interrogare un database o creare un hello world con GTK con la stessa semplicità che offre il gambero.
Insomma sarebbe come paragonare un camper e una ferrari durante il viaggio. Il primo sarà più comodo ma sarà lento mentre la seconda ti porta subito a destinazione ma starai scomodo.

Offline md9327

  • Moderatore
  • Senatore Gambero
  • *****
  • Post: 2.840
    • Mostra profilo
Re: SHA-256
« Risposta #14 il: 29 Luglio 2010, 12:13:40 »
Come ha accennato Cesko, la lentezza dipende da molti fattori.
Riguardo la shell, in teoria sarebbe solo una chiamata al so, per cui i tempi sono quelli relativi ai sistemi di accesso e alle librerie su cui si basa Gambas.
Però, una volta che sei dentro la shell, la velocità è quella del so, e Gambas entra solo per quanto riguarda il ritorno.
Se, e dico se, fai un loop di chiamate al so tramite shell, ovviamente i tempi di elaborazione si sommano ai tempi di accesso al so, e per lunghe procedure questo diventa più che tangibile.
Ora, non sò come tu abbia costruito la funzione, ma credo tu debba pensarla in modo da ridurre i vari colli di bottiglia.
Infine, fare paragoni con altri linguaggi, seppur simili, credo sia fuorviante, perchè gli approcci possono essere completamente diversi, anche se all'apparenza simili.
Riguardo ai linguaggi interpretati, il discorso varia molto dalla struttura sui cui si poggiano. Per dirla breve, Gambas si appoggia su librerie consolidate, ma che sono completamente slegate dal questo linguaggio (vedi ad esempio le lib grafiche kde e gtk), mentre altri linguaggi sempre interpretati hanno un substrato costruito ad-hoc, per cui il passaggio è più diretto alle funzioni di accesso al sistema. I vari strati, e il loro numero, determinano la risposta in termini di velocità del prodotto finale. Un esempio: Java, linguaggio indipedente dal so, ma costruito su un suo proprio substrato di libreria C/Asm, che sono a loro volta legate e diverse per tipo di sistema.

Spero di aver chiarito i concetti...

Bye