Wednesday, March 19, 2014

Base58Check


Base58Check je enkodiranje u modificiranoj bazi 58 koje se koristi za enkodiranje bitcoin adresa. Ono pretvara nizove bajtova u nizove znakova koje ljudi mogu lakše zapisivati odnosno tipkati. Base58Check posebno je konstruirano kako bi se izbjegli znakovi "0", "O", "I" te "l" da nebi došlo do greške prilikom upisivanja adrese.

Uz te karakteristike Base58Check ima i jedan bajt koji označava verziju bitcoin adrese, 4 bajta zaštitne sume bazirane na SHA-256 te dodatan korak koji pazi da se sačuvaju vodeće nule u zapisu. Važno je napomenuti da se kod enkodiranja koristi big-endian format.

Enkodiranje privatnog ključa

Osim što se koristi za enkodiranje javnih ključeva u bitcoin adrese, Base58Check koristi se i za enkodiranje privatnih ključeva u tzv. Wallet Import Format kako bi se olakšalo njihovo prepisivanje odnosno kopiranje.
Postupak:
  1. Primjer privatnog ključa 0C28FCA386C7A227600B2FE50B7CAE11EC86D3BF1FBE471BE89827E19D72AA1D
  2. Na početak mu se dodaje bajt 0x80 za glavnu mrežu ili 0xef za testnu 800C28FCA386C7A227600B2FE50B7CAE11EC86D3BF1FBE471BE89827E19D72AA1D
  3. Niz se hashira pomoću SHA-256 8147786C4D15106333BF278D71DADAF1079EF2D2440A4DDE37D747DED5403592
  4. I opet 507A5B8DFED0FC6FE8801743720CEDEC06AA5C6FCA72B07C49964492FB98A714
  5. Prva četiri bajta uzimaju se za zaštitnu sumu 507A5B8D
  6. Ta se četiri bajta dodaju na kraj niza iz točke 2 800C28FCA386C7A227600B2FE50B7CAE11EC86D3BF1FBE471BE89827E19D72AA1D507A5B8D
  7. Enkodiranje pomoću Base58Check daje konačni rezultat 5HueCGU8rMjxEXxiPuD5BDku4MkFqeZyd4dZ1jvhTVqvbTLvyTJ

Tablica za konverziju

Vrijednost
Znak
Vrijednost
Znak
Vrijednost
Znak
Vrijednost
Znak
0
1
1
2
2
3
3
4
4
5
5
6
6
7
7
8
8
9
9
A
10
B
11
C
12
D
13
E
14
F
15
G
16
H
17
J
18
K
19
L
20
M
21
N
22
P
23
Q
24
R
25
S
26
T
27
U
28
V
29
W
30
X
31
Y
32
Z
33
a
34
b
35
c
36
d
37
e
38
f
39
g
40
h
41
i
42
j
43
k
44
m
45
n
46
o
47
p
48
q
49
r
50
s
51
t
52
u
53
v
54
w
55
x
56
y
57
z





 


No comments:

Post a Comment