Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #!/bin/bash
- #
- ########################################################
- # #
- # Gerador determinístico de endereco BTC por string #
- # #
- # Gera os dois enderecos (compresso e nao compresso) #
- # qui 18 abr 2019 17:50 Gabriel Brito a.k.a tty025 #
- # #
- # Parte do projeto teste SLMC #
- # #
- ########################################################
- #################################
- #################################
- if [ "$1" == "" ]; then true & exit; fi
- semente="$1"
- #################################
- #################################
- p() { echo -n "$1"|xxd -r -p; }; u() { local l; xxd -p|while read l; do echo -n "${l/\\/}"; done; };
- declare -a base58=(
- 1 2 3 4 5 6 7 8 9
- A B C D E F G H J K L M N P Q R S T U V W X Y Z
- a b c d e f g h i j k m n o p q r s t u v w x y z
- ); unset dcr; for i in {0..57}; do dcr+="${i}s${base58[i]}"; done
- declare ec_dc='
- I16i7sb0sa[[_1*lm1-*lm%q]Std0>tlm%Lts#]s%[Smddl%x-lm/rl%xLms#]s~
- 483ADA7726A3C4655DA4FBFC0E1108A8FD17B448A68554199C47D08FFB10D4B8
- 79BE667EF9DCBBAC55A06295CE870B07029BFCDB2DCE28D959F2815B16F81798
- 2 100^d14551231950B75FC4402DA1732FC9BEBF-so1000003D1-ddspsm*+sGi
- [_1*l%x]s_[+l%x]s+[*l%x]s*[-l%x]s-[l%xsclmsd1su0sv0sr1st[q]SQ[lc
- 0=Qldlcl~xlcsdscsqlrlqlu*-ltlqlv*-lulvstsrsvsulXx]dSXxLXs#LQs#lr
- l%x]sI[lpSm[+q]S0d0=0lpl~xsydsxd*3*lal+x2ly*lIx*l%xdsld*2lx*l-xd
- lxrl-xlll*xlyl-xrlp*+Lms#L0s#]sD[lpSm[+q]S0[2;AlDxq]Sdd0=0rd0=0d
- 2:Alp~1:A0:Ad2:Blp~1:B0:B2;A2;B=d[0q]Sx2;A0;B1;Bl_xrlm*+=x0;A0;B
- l-xlIxdsi1;A1;Bl-xl*xdsld*0;Al-x0;Bl-xd0;Arl-xlll*x1;Al-xrlp*+L0
- s#Lds#Lxs#Lms#]sA[rs.0r[rl.lAxr]SP[q]sQ[d0!<Qd2%1=P2/l.lDxs.lLx]
- dSLxs#LPs#LQs#]sM[lpd1+4/r|]sR
- ';
- #################################
- #################################
- eB58() { local n; echo -n "$1"|sed -e's/^\(\(00\)*\).*/\1/' -e's/00/1/g'|tr -d '\n';
- dc -e "16i ${1^^} [3A ~r d0<x]dsxx +f"|while read -r n; do echo -n "${base58[n]}"; done; }
- chksum() { p "$1"|openssl dgst -sha256 -binary|openssl dgst -sha256 -binary|u|head -c 8; }
- h160() { openssl dgst -sha256 -binary|openssl dgst -rmd160 -binary|u; }
- endereco() { local x="$(printf "%2s%${3:-40}s" ${2:-00} $1|sed 's/ /0/g')";
- eB58 "$x$(chksum "$x")"; echo ""; }
- hash="$(echo -n "$semente"|sha256sum|cut -d" " -f1)";
- unc_wif="$(endereco "$hash" 80 64)"
- cmp_wif="$(endereco "${hash}01" 80 66)"
- dc -e "$ec_dc lG I16i${hash^^}ri lMx 16olm~ n[ ]nn"| { read y x; X="$(printf "%64s" $x| sed 's/ /0/g')";
- Y="$(printf "%64s" $y| sed 's/ /0/g')"; if [[ "$y" =~ [02468ACE]$ ]]; then y_parity="02"; else y_parity="03"; fi
- unc_end="$(endereco "$(p "04$X$Y"|h160)")"; cmp_end="$(endereco "$(p "$y_parity$X"|h160)")"
- #################################
- #################################
- #echo "$1"
- #echo "$hash"
- #echo "[Chave publica X,Y]"
- #echo "$X"
- #echo "$Y"
- echo "$cmp_end;$cmp_wif"
- echo "$unc_end;$unc_wif"
- }
- #################################
- #################################
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement