SHA3 Module (Keccak Module)

Partagez votre expérience de PureBasic avec les autres utilisateurs.
sec
Messages : 1
Inscription : ven. 06/sept./2013 3:49

SHA3 Module (Keccak Module)

Message par sec »

For latest version : http://www.purebasic.fr/english/viewtop ... 40&t=56420

Code : Tout sélectionner

    ;======================================================================
    ; Module:          SHA3.pbi
    ;
    ; Author:          sec
    ; Date:            Sep 03, 2013
    ; Version:         1.4.4
    ; Target Compiler: PureBasic 5.20+
    ; Target OS:       All
    ; License:         Free, unrestricted, no warranty whatsoever
    ;                  Use at your own risk
    ;======================================================================

    DeclareModule SHA3 
      Declare$ sha224(*Buffer, Size)
      Declare$ sha256(*Buffer, Size)
      Declare$ sha384(*Buffer, Size)
      Declare$ sha512(*Buffer, Size)   
    EndDeclareModule

    Module SHA3
      EnableExplicit
      ;-Internal functions 
     
      ;credit: Danilo
      DataSection
        _rndc:
        Data.q $0000000000000001, $0000000000008082, $800000000000808a
        Data.q $8000000080008000, $000000000000808b, $0000000080000001
        Data.q $8000000080008081, $8000000000008009, $000000000000008a
        Data.q $0000000000000088, $0000000080008009, $000000008000000a
        Data.q $000000008000808b, $800000000000008b, $8000000000008089
        Data.q $8000000000008003, $8000000000008002, $8000000000000080
        Data.q $000000000000800a, $800000008000000a, $8000000080008081
        Data.q $8000000000008080, $0000000080000001, $8000000080008008
       
        _rotc:
        Data.l 1,  3,  6,  10, 15, 21, 28, 36, 45, 55, 2,  14
        Data.l 27, 41, 56, 8,  25, 43, 62, 18, 39, 61, 20, 44
       
        _piln:
        Data.l 10, 7,  11, 17, 18, 3, 5,  16, 8,  21, 24, 4
        Data.l 15, 23, 19, 13, 12, 2, 20, 14, 22, 9,  6,  1
      EndDataSection
      Structure QuadArray : q.q[0] : EndStructure
      Structure LongArray : l.l[0] : EndStructure
     
     
      ;credit: wilbert
      Procedure.q Rotl64(val.q, n)   
        !mov ecx, [p.v_n]
        CompilerIf #PB_Compiler_Processor = #PB_Processor_x64
          !mov rax, [p.v_val]
          !rol rax, cl
        CompilerElse
          !btr ecx, 5
          !jc rotl64_1
          !mov eax, [p.v_val]
          !mov edx, [p.v_val + 4]
          !jmp rotl64_2
          !rotl64_1:
          !mov edx, [p.v_val]
          !mov eax, [p.v_val + 4]
          !rotl64_2:
          !push ebx
          !mov ebx, eax
          !shld eax, edx, cl
          !shld edx, ebx, cl
          !pop ebx
        CompilerEndIf
        ProcedureReturn
      EndProcedure

      #KECCAK_ROUNDS = 24
     
      Procedure keccakf(Array st.q(1), rounds.i)
        Define *rndc.QuadArray = ?_rndc
        Define *rotc.LongArray = ?_rotc
        Define *piln.LongArray = ?_piln
        Define.i i, j, round
        Define.q t
        Dim bc.q(5-1)
       
        For round = 0 To rounds -1
         
          ;Theta
          For i = 0 To 4 
            bc(i) = st(i) ! st(i + 5) ! st(i + 10) ! st(i + 15) ! st(i + 20)
           
          Next           
          For i = 0 To 4
            t = bc((i + 4) % 5) ! ROTL64(bc((i + 1) % 5), 1)       
            For j = 0 To 24 Step 5
              st(j + i) ! t
            Next
          Next
         
          ;Rho Pi
          t = st(1)     
          For i = 0 To 23
            j = *piln\l[i]       
            bc(0) = st(j)
            st(j) = ROTL64(t, *rotc\l[i])
           
            t = bc(0)
          Next
         
          ;Chi
          For j = 0 To 24 Step 5       
            For i = 0 To 4
              bc(i) = st(j + i)
            Next       
            For i = 0 To 4
              st(j + i) ! ((~bc((i + 1) % 5)) & bc((i + 2) % 5))
            Next
           
          Next
         
          ;Iota
          st(0) ! *rndc\q[round]
        Next
       
      EndProcedure   
     
     
      Procedure$ keccak(in, inlen, mdlen)
        Dim st.q(25)
        Dim temp.a(144)
        Define.i i, rsiz, rsizw
        Define stemp$
       
        rsiz = 200 - 2 * mdlen
        rsizw = rsiz / 8
       
        FillMemory(@st(),SizeOf(Quad) + SizeOf(Quad)*ArraySize(st()))
       
        While inlen >= rsiz
          For i = 0 To rsizw-1       
            st(i) ! PeekQ(in+i*SizeOf(Quad))       
          Next
          keccakf(st(), #KECCAK_ROUNDS)
          inlen - rsiz
          in + rsiz
        Wend   
       
        ;last block And padding
        CopyMemory(in, @temp(), inlen)
       
        temp(inlen) = 1
        inlen+1   
       
        FillMemory(@temp() + inlen,rsiz - inlen + 1 ,0)   
       
        temp(rsiz - 1) | $80       
        For i = 0 To rsizw -1   
          st(i) ! PeekQ(@temp(i*SizeOf(Quad)))
        Next   
       
        keccakf(st(), #KECCAK_ROUNDS)
       
       
        stemp$=""
        For i = 0 To mdlen -1
          stemp$ + RSet(Hex(PeekA(@st()+i)),2,"0")
        Next
        ProcedureReturn stemp$
      EndProcedure
     
     
      ;-SHA3 functions
      Procedure$ sha224(*Buffer, Size)   
        ProcedureReturn keccak(*Buffer, Size, 28)
      EndProcedure
     
      Procedure$ sha256(*Buffer, Size)   
        ProcedureReturn keccak(*Buffer, Size, 32)
      EndProcedure
     
      Procedure$ sha384(*Buffer, Size)
        ProcedureReturn keccak(*Buffer, Size, 48)
      EndProcedure
     
      Procedure$ sha512(*Buffer, Size)
        ProcedureReturn keccak(*Buffer, Size, 64)
      EndProcedure
     
     
    EndModule

    ;-Usage - Example
    CompilerIf #PB_Compiler_IsMainFile
      EnableExplicit
     
      Define msg$ = "The quick brown fox jumps over the lazy dog."
      Define msglen = StringByteLength(msg$)
     
      Debug SHA3::sha224(@msg$, msglen)
      Debug SHA3::sha256(@msg$, msglen)
      Debug SHA3::sha384(@msg$, msglen)
      Debug SHA3::sha512(@msg$, msglen)
     
     
    CompilerEndIf
Cordialement, :)
sec
Avatar de l’utilisateur
Geek-girl
Messages : 4
Inscription : mer. 04/déc./2013 12:14
Contact :

Re: SHA3 Module (Keccak Module)

Message par Geek-girl »

Je vais exploiter ça, merci pour le partage. 8)
Backup
Messages : 14526
Inscription : lun. 26/avr./2004 0:40

Re: SHA3 Module (Keccak Module)

Message par Backup »

rhoo le déterrage ... ça sent le Bot !
Avatar de l’utilisateur
falsam
Messages : 7244
Inscription : dim. 22/août/2010 15:24
Localisation : IDF (Yvelines)
Contact :

Re: SHA3 Module (Keccak Module)

Message par falsam »

Dobro a écrit :ça sent le Bot !
Peut être, mais pour une fois c'est une Bot Geek-girl ....du moins en apparence. Attendons voir si on obtient des réponses :)
Configuration : Windows 11 Famille 64-bit - PB 6.03 x64 - AMD Ryzen 7 - 16 GO RAM
Vidéo NVIDIA GeForce GTX 1650 Ti - Résolution 1920x1080 - Mise à l'échelle 125%
Avatar de l’utilisateur
flaith
Messages : 1487
Inscription : jeu. 07/avr./2005 1:06
Localisation : Rennes
Contact :

Re: SHA3 Module (Keccak Module)

Message par flaith »

Aux vues des autres messages et du site web, je ne pense pas, donc bienvenue Geek-girl :)
Avatar de l’utilisateur
Kwai chang caine
Messages : 6962
Inscription : sam. 23/sept./2006 18:32
Localisation : Isere

Re: SHA3 Module (Keccak Module)

Message par Kwai chang caine »

Une fifille !!!! 8O
Bienvenue madame 8)
ImageLe bonheur est une route...
Pas une destination

PureBasic Forum Officiel - Site PureBasic
Avatar de l’utilisateur
Ar-S
Messages : 9477
Inscription : dim. 09/oct./2005 16:51
Contact :

Re: SHA3 Module (Keccak Module)

Message par Ar-S »

Dobro a écrit :rhoo le déterrage ... ça sent le Bot !
Les bots n'ont pas d'avatar et encore moins en relation avec leur nom ^^
~~~~Règles du forum ~~~~
⋅.˳˳.⋅ॱ˙˙ॱ⋅.˳Ar-S ˳.⋅ॱ˙˙ॱ⋅.˳˳.⋅
W11x64 PB 6.x
Section HORS SUJET : ICI
LDV MULTIMEDIA : Dépannage informatique & mes Logiciels PB
UPLOAD D'IMAGES : Uploader des images de vos logiciels
Backup
Messages : 14526
Inscription : lun. 26/avr./2004 0:40

Re: SHA3 Module (Keccak Module)

Message par Backup »

ha ?
si tu le dis ..... :)
G-Rom
Messages : 3627
Inscription : dim. 10/janv./2010 5:29

Re: SHA3 Module (Keccak Module)

Message par G-Rom »

Kwai chang caine a écrit :Une fifille !!!! 8O
Bienvenue madame 8)
Du calme kcc, c'est peu être une ado de quinze ans... :wink:
Avatar de l’utilisateur
falsam
Messages : 7244
Inscription : dim. 22/août/2010 15:24
Localisation : IDF (Yvelines)
Contact :

Re: SHA3 Module (Keccak Module)

Message par falsam »

A prioris c'est pas un bot, mais elle cherche quand même un moyen de faire connaitre son blog des Technologies et des sciences. Sauf qu'elle s'y prend mal :mrgreen:

Au lieu de mettre l'url de son site dans sa signature, elle l'a mis dans son profil.
Configuration : Windows 11 Famille 64-bit - PB 6.03 x64 - AMD Ryzen 7 - 16 GO RAM
Vidéo NVIDIA GeForce GTX 1650 Ti - Résolution 1920x1080 - Mise à l'échelle 125%
Backup
Messages : 14526
Inscription : lun. 26/avr./2004 0:40

Re: SHA3 Module (Keccak Module)

Message par Backup »

ce que je vais ecrire ...c'est Hors sujet ( a déplacer donc .... :) )
je ne suis pas d'accords avec son préhambule sur les besoins energétique du futur dans son article "Les énergies renouvelables" !
propos alarmiste .... "catastrophismique", typique des "Verts"
Dans un monde presque à cours de carburants les meilleurs ingénieurs tentent de trouver des solutions de remplacement. Solaire, géothermie, éolien et fusion thermonucléaire…

Chaque l’énergie produite par notre soleil pourrait alimenter notre civilisation pendant un million d’année. Reproduire l’énergie du soleil, une source d’énergie sans limite, sans risque à vie longue. La raréfaction de l’eau douce va rendre la désalinisation obligatoire à grande échelle ce qui demandera encore plus d’énergie.


ha ? l'eau douce va disparaitre ? pour aller ou ?

ça me fait penser au propos alarmistes du siecle dernier a propos de la disparition des agriculteurs
c'etait sans compter sur la "mécanisation" un agriculteur aujourd'hui a le rendement de 30 agriculteurs de 1960 ...

tirer ce genre de conclusion , reviens a un manque de confiance, de l'imagination et de l'esprit inventif des hommes ...
tout ce que je constate , m'indique au contraire, que nous avons de moins en moins besoin d'ennergie

chez moi par exemple , mon eclairage est a 80 % fait avec des lampes a Leds (60 leds par lampe ) chacune de ces lampes consomme 3W !!
lorsque j'allume mon Salon , les 19 lampes ne consomme que 57 W !!!
soit meme pas une bonne vielle ampoule de 60W a filamment, courramment utilisé jusqu'alors .....

les voitures d'aujourd'hui demande moins d'energie que celle d'hier ... etc ...

des exemples comme ça j'en ai plein ... alors "Pré-ambuler" sur le fait qu'on aura besoin de plus en plus d'ennergie .. me laisse perplexe :)

pour rappel a la demoiselle , il existe des moyen quasi naturel pour "déssaliniser" l'eau de Mer
comme l'Osmose inverse par exemple http://fr.wikipedia.org/wiki/Osmose_inverse

ou bien La distillation , ou La distillation par four Solaire
http://fr.wikipedia.org/wiki/Distillation

ou mieux la Condensation !! cout energétique Nulle !! (c'est le soleil qui fait le boulot )
http://fr.wikipedia.org/wiki/Condensation

bref , juste pour démontrer , que son pré-ambule est deja une forme de militantisme Verdatre .. et moi , ça me dérange :)
Avatar de l’utilisateur
graph100
Messages : 1318
Inscription : sam. 21/mai/2005 17:50

Re: SHA3 Module (Keccak Module)

Message par graph100 »

Dobro a écrit :ha ? l'eau douce va disparaitre ? pour aller ou ?
oulala...

C'est un sujet sur lequel il faut être un expert pour pouvoir s'exprimer puisque la plupart des infos qu'on peut trouver sont exprimés selon le point de vue particulier qui servira tels ou tels intérêts...

En tout cas, sans être un tel expert, si on dit que l'eau douce va "disparaitre", c'est plutôt à mon avis, l'eau douce potable dont on parle.
Et puis il faut pas faire l'autruche... On fait pas du bien à notre environnement.

Plz !! Un gm pour déplacer TOUT les post qui n'ont rien a faire ici ?
_________________________________________________
Mon site : CeriseCode (Attention Chantier perpétuel ;))
Avatar de l’utilisateur
Kwai chang caine
Messages : 6962
Inscription : sam. 23/sept./2006 18:32
Localisation : Isere

Re: SHA3 Module (Keccak Module)

Message par Kwai chang caine »

G-Rom a écrit :
Kwai chang caine a écrit :Une fifille !!!! 8O
Bienvenue madame 8)
Du calme kcc, c'est peu être une ado de quinze ans... :wink:
T'as raison .... :oops:
Bienvenue "Mademaselle" :mrgreen:
L'ado de 15 ans a écrit :Dans un monde presque à cours de carburants les meilleurs ingénieurs tentent de trouver des solutions de remplacement. Solaire, géothermie, éolien et fusion thermonucléaire…
Chaque l’énergie produite par notre soleil pourrait alimenter notre civilisation pendant un million d’année. Reproduire l’énergie du soleil, une source d’énergie sans limite, sans risque à vie longue. La raréfaction de l’eau douce va rendre la désalinisation obligatoire à grande échelle ce qui demandera encore plus d’énergie.
Put....y sont drolement plus intelo que j'le pensais les ados de maintenant 8O :wink: :lol:
Moi qui pensais qu'ils savaient que meugler, en remuant leurs petits doigts musclés sur un smartphone, tout en machant du "chewing gum" :oops:
Image
ImageLe bonheur est une route...
Pas une destination

PureBasic Forum Officiel - Site PureBasic
Avatar de l’utilisateur
Kwai chang caine
Messages : 6962
Inscription : sam. 23/sept./2006 18:32
Localisation : Isere

Re: SHA3 Module (Keccak Module)

Message par Kwai chang caine »

sec a écrit :For latest version : http://www.purebasic.fr/english/viewtop ... 40&t=56420
Put...on manque à toutes les règles fondamentales de la politesse, même si c'est vieux :? :oops:
Merci SEC pour ce code

Works perfectly here
Thanks for sharing 8)
ImageLe bonheur est une route...
Pas une destination

PureBasic Forum Officiel - Site PureBasic
Répondre