Skip to content

Instantly share code, notes, and snippets.

@hansieodendaal
Forked from CjS77/raid_id.py
Created March 15, 2019 04:29
Show Gist options
  • Save hansieodendaal/721db88197b6b8ff1683f5748e7e9e44 to your computer and use it in GitHub Desktop.
Save hansieodendaal/721db88197b6b8ff1683f5748e7e9e44 to your computer and use it in GitHub Desktop.
Proposed RAID_ID algorithm
# -*- coding: utf-8 -*-
from hashlib import blake2b
import bitcoin.base58 as base58 #dependency: pip install python-bitcoinlib
import string
import random
import binascii
def create_raid(Pk, fqdn, prefix):
s = fqdn if fqdn else "NO_FQDN"
#Creat hash object
hash = blake2b(digest_size=10)
#Concatenate FQDN and public key
hash.update(bytes(map(ord, Pk)))
hash.update(bytes(map(ord, str(fqdn))))
#Hash
hash_digest = hash.digest()
#Base58 encoding
s_con = bytes([prefix]) + hash_digest
base58_encode = []
base58_encode.append([binascii.hexlify(bytes([prefix])), hash_digest, base58.encode(s_con)])
return base58_encode
pub_key = "ca469346d7643336c19155fdf5c6500a5232525ce4eba7e4db757639159e9861"
print("\nPublic Key = %s" % (pub_key))
for s in [None, "disney.com", "www.tarilabs.com", "tickets.bigneon.com"]:
print("\nFQDN: \"%s\"" % (s))
print("PubKey & FQDN: \"%s\"" % (pub_key + str(s)))
raid_id = []
#Calculate RAID_ID with extended prefix range
for prefix in range(0x00, 0xff):
b58 = create_raid(pub_key, s, prefix)
raid_id.append(b58[0])
print(" => blake2b_10 digest %s" % (raid_id[0][1]))
print(" => blake2b_10 hexdigest %s" % (binascii.hexlify(raid_id[0][1])))
#Only print selected prefix range
for i in range(len(raid_id)):
if raid_id[i][2][0] == 'R':
print(" => base58 (%4s) %s" % (raid_id[i][0], raid_id[i][2]))
@hansieodendaal
Copy link
Author

hansieodendaal commented Mar 15, 2019

Public Key = ca469346d7643336c19155fdf5c6500a5232525ce4eba7e4db757639159e9861

FQDN: "None"
PubKey & FQDN: "ca469346d7643336c19155fdf5c6500a5232525ce4eba7e4db757639159e9861None"
   => blake2b_10 digest     b'E\xe7gvH\x1d\xdd\xbe\xe7\xeb'
   => blake2b_10 hexdigest  b'45e76776481dddbee7eb'
   => base58 (b'61')        R82yym8uJvNGnen
   => base58 (b'62')        RNRArrLC6y35iH8
   => base58 (b'63')        RcoMjwXUu1htduU
   => base58 (b'64')        RsBYd2imh4NhZXp

FQDN: "disney.com"
PubKey & FQDN: "ca469346d7643336c19155fdf5c6500a5232525ce4eba7e4db757639159e9861disney.com"
   => blake2b_10 digest     b'\xffQz\x13\x87\x15<\xc3\x80\t'
   => blake2b_10 hexdigest  b'ff517a1387153cc38009'
   => base58 (b'60')        R44ybj4BbTunuS8
   => base58 (b'61')        RJTAUpFUPWabq4U
   => base58 (b'62')        RYqMMuSmBZFQkgp
   => base58 (b'63')        RoDYEze3ybvDgKA

FQDN: "www.tarilabs.com"
PubKey & FQDN: "ca469346d7643336c19155fdf5c6500a5232525ce4eba7e4db757639159e9861www.tarilabs.com"
   => blake2b_10 digest     b'x\x83\xb8_I5\x97\x96\xf28'
   => blake2b_10 hexdigest  b'7883b85f49359796f238'
   => base58 (b'61')        RAsuARykya4yfbV
   => base58 (b'62')        RRG63XB3mcjnbDq
   => base58 (b'63')        RfeGvcNLZfQbWrB
   => base58 (b'64')        Rv2TohZdMi5QSUX

FQDN: "tickets.bigneon.com"
PubKey & FQDN: "ca469346d7643336c19155fdf5c6500a5232525ce4eba7e4db757639159e9861tickets.bigneon.com"
   => blake2b_10 digest     b'\xeb\xb0N\xcc\xd9\x04\xfc3\x92\xc9'
   => blake2b_10 hexdigest  b'ebb04eccd904fc3392c9'
   => base58 (b'60')        R2y1hPp84hAzWP2
   => base58 (b'61')        RHMCaV1QrjqoS1N
   => base58 (b'62')        RXjPTaChenWcMdi
   => base58 (b'63')        Rn7aLfPzSqBRHG4

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment