M
mosfets.bjt
Guest
var kāds PLZ pārvērst šo pseido kodu saprotamu C kodu?.
šis ir pseido kods MD5 algoritmu i atrast wikipedia/ / Piezīme: Visi mainīgie lielumi, ir parakstīti 32 bitiem un wrap moduļa 2 ^ 32, aprēķinot
var int [64] r, k
/ / R precizē vienu kārtu maiņu summas
r [0 .. 15]: = (7, 12, 17, 22, 7, 12, 17, 22, 7, 12, 17, 22, 7, 12, 17, 22)
r [16 .. 31]: = (5, 9, 14, 20, 5, 9, 14, 20, 5, 9, 14, 20, 5, 9, 14, 20)
r [32 .. 47]: = (4, 11, 16, 23, 4, 11, 16, 23, 4, 11, 16, 23, 4, 11, 16, 23)
r [48 .. 63]: = (6, 10, 15, 21, 6, 10, 15, 21, 6, 10, 15, 21, 6, 10, 15, 21)
/ / Lietojiet bināro veselu daļa veseli skaitļi Sinešas no (radiānos), kā konstantes:
es 0-63
k : = stāvs (abs (sin (i 1)) × (2 pow 32))
/ / Inicializēt mainīgajiem:
var int H0: = 0x67452301
var int h1: = 0xEFCDAB89
var int h2: = 0x98BADCFE
var int h3: = 0x10325476
/ / Pirms apstrādes:
pievieno "1" mazliet ziņojumu
pievieno "0" biti līdz ziņu garums bitos ≡ 448 (mod 512)
pievienot bit / * bitu, nevis baitu * / garums unpadded ziņas par 64-bit maz endian vesels skaitlis, lai ziņu
/ / Process ziņu secīgu 512-bit gabalos:
par katru 512-bit rieciens ziņojuma
pārtraukums rieciens uz sešpadsmit 32-bit maz endian vārdi w , 0 ≤ i ≤ 15
/ / Inicializēt hash vērtību šai rieciens:
var int: = H0
var int b: = h1
var int c: = h2
var int d: = h3
/ / Main sakaru līnijai:
es 0-63
ja 0 ≤ i ≤ 15 tad
f: = (b un c) vai ((ne b) un d)
g: = i
cits ja 16 ≤ i ≤ 31
f: = (d un b) vai ((nav d) un c)
g: = (5 × i 1) mod 16
cits ja 32 ≤ i ≤ 47
f: = b XOR c XOR d
g: = (3 × i 5) mod 16
cits ja 48 ≤ i ≤ 63
f: = c XOR (b vai (ne d))
g: = (7 × i) mod 16
temperatūra: = d
d: = c
c: = b
b: = b leftrotate (( f k w [g]), r )
: = temp
/ / Pievienot šo gabalu ir hash par iemeslu šim:
H0: = H0
h1: = h1 b
h2: = h2 c
h3: = H3 d
var int sagremot: = H0 pievienot h1 pievienot h2 pievienot h3 / / (izteikts kā maz-endian)
/ / Leftrotate funkciju definīcija
leftrotate (x, c)
atgriešanās (x <<c) vai (x> (32-c) apakšpunkts);
Piezīme: Tā vietā, lai formulētu no oriģinālā 1321 RFC redzams, šādus var izmantot uzlabotu efektivitāti (noderīgi, ja montāžas valoda tiek lietota - citādi, kompilators parasti optimizētu minēto kodu. Tā kā katrs aprēķins ir atkarīgs no citu šajā formulu, tas bieži vien lēnāks nekā iepriekš minēto metodi, ja NAND / un var parallelised):
(0 ≤ i ≤ 15): f: = d XOR (b un (c XOR d))
(16 ≤ i ≤ 31): f: = c XOR (d un (b XOR c))Pievienots pēc 1 minūtes
arba c kods, tas ir, ar pareizu šifrēšanas MD5
šis ir pseido kods MD5 algoritmu i atrast wikipedia/ / Piezīme: Visi mainīgie lielumi, ir parakstīti 32 bitiem un wrap moduļa 2 ^ 32, aprēķinot
var int [64] r, k
/ / R precizē vienu kārtu maiņu summas
r [0 .. 15]: = (7, 12, 17, 22, 7, 12, 17, 22, 7, 12, 17, 22, 7, 12, 17, 22)
r [16 .. 31]: = (5, 9, 14, 20, 5, 9, 14, 20, 5, 9, 14, 20, 5, 9, 14, 20)
r [32 .. 47]: = (4, 11, 16, 23, 4, 11, 16, 23, 4, 11, 16, 23, 4, 11, 16, 23)
r [48 .. 63]: = (6, 10, 15, 21, 6, 10, 15, 21, 6, 10, 15, 21, 6, 10, 15, 21)
/ / Lietojiet bināro veselu daļa veseli skaitļi Sinešas no (radiānos), kā konstantes:
es 0-63
k : = stāvs (abs (sin (i 1)) × (2 pow 32))
/ / Inicializēt mainīgajiem:
var int H0: = 0x67452301
var int h1: = 0xEFCDAB89
var int h2: = 0x98BADCFE
var int h3: = 0x10325476
/ / Pirms apstrādes:
pievieno "1" mazliet ziņojumu
pievieno "0" biti līdz ziņu garums bitos ≡ 448 (mod 512)
pievienot bit / * bitu, nevis baitu * / garums unpadded ziņas par 64-bit maz endian vesels skaitlis, lai ziņu
/ / Process ziņu secīgu 512-bit gabalos:
par katru 512-bit rieciens ziņojuma
pārtraukums rieciens uz sešpadsmit 32-bit maz endian vārdi w , 0 ≤ i ≤ 15
/ / Inicializēt hash vērtību šai rieciens:
var int: = H0
var int b: = h1
var int c: = h2
var int d: = h3
/ / Main sakaru līnijai:
es 0-63
ja 0 ≤ i ≤ 15 tad
f: = (b un c) vai ((ne b) un d)
g: = i
cits ja 16 ≤ i ≤ 31
f: = (d un b) vai ((nav d) un c)
g: = (5 × i 1) mod 16
cits ja 32 ≤ i ≤ 47
f: = b XOR c XOR d
g: = (3 × i 5) mod 16
cits ja 48 ≤ i ≤ 63
f: = c XOR (b vai (ne d))
g: = (7 × i) mod 16
temperatūra: = d
d: = c
c: = b
b: = b leftrotate (( f k w [g]), r )
: = temp
/ / Pievienot šo gabalu ir hash par iemeslu šim:
H0: = H0
h1: = h1 b
h2: = h2 c
h3: = H3 d
var int sagremot: = H0 pievienot h1 pievienot h2 pievienot h3 / / (izteikts kā maz-endian)
/ / Leftrotate funkciju definīcija
leftrotate (x, c)
atgriešanās (x <<c) vai (x> (32-c) apakšpunkts);
Piezīme: Tā vietā, lai formulētu no oriģinālā 1321 RFC redzams, šādus var izmantot uzlabotu efektivitāti (noderīgi, ja montāžas valoda tiek lietota - citādi, kompilators parasti optimizētu minēto kodu. Tā kā katrs aprēķins ir atkarīgs no citu šajā formulu, tas bieži vien lēnāks nekā iepriekš minēto metodi, ja NAND / un var parallelised):
(0 ≤ i ≤ 15): f: = d XOR (b un (c XOR d))
(16 ≤ i ≤ 31): f: = c XOR (d un (b XOR c))Pievienots pēc 1 minūtes