import hashlib
import zlib



def website_dnstree_entry(link):
    dnspath = "/".join(urlsplit(link).netloc.split(".")[::-1])
    fs_loc = urlsplit(link).path

def triangulum(data):
    return [
        [
            len(hashlib.new(h, data).digest()),
            h, 
            zlib.crc32(hashlib.new(h, data).digest()),
            zlib.adler32(hashlib.new(h, data).digest()),
            [
                (
                    zlib.crc32(hashlib.new(h, data).digest())
                    -
                    zlib.adler32(hashlib.new(h, data).digest())
                ),
                (
                    zlib.crc32(hashlib.new(h, data).digest())
                    /
                    zlib.adler32(hashlib.new(h, data).digest())
                )
            ],[
                (
                    zlib.adler32(hashlib.new(h, data).digest())
                    /
                    zlib.crc32(hashlib.new(h, data).digest())
                ),
                (
                    zlib.adler32(hashlib.new(h, data).digest())
                    -
                    zlib.crc32(hashlib.new(h, data).digest())
                )
            ]
        ] for h in [
            "md5",
            "sha1",
            "sha224",
            "sha256",
            "sha384",
            "sha512",
            "sha3_224",
            "sha3_256",
            "sha3_384",
            "sha3_512",
            "blake2b",
            "blake2s"
        ]
    ]

print(triangullum(b'xxx'))



    
def protoTriangullum(data):
    return [
        [
            len(hashlib.new(h, data).digest()),
            h, 
            zlib.crc32(hashlib.new(h, data).digest()),
            zlib.adler32(hashlib.new(h, data).digest())
        ] for h in [
            "md5",
            "sha1",
            "sha224",
            "sha256",
            "sha384",
            "sha512",
            "sha3_224",
            "sha3_256",
            "sha3_384",
            "sha3_512",
            "blake2b",
            "blake2s"
        ]
    ]
tridata = protoTriangullum(b'xxx')
print(tridata)
tridata.sort()
print(tridata)

import json
import hashlib
import zlib
# (crc32-adler32)/(adler32+crc32)
# (adler32-crc32)/crc32
# (crc32-adler32)/adler32
# (adler32-crc32)/crc32
# crc32/adler32
# adler32/crc32
# (adler32+crc32)/adler32*crc32

def semistates(record):
    return (
        zlib.adler32(record),
        zlib.crc32(record)
    )

def standardTanglembeds(rawstatements):
    data = rawstatements.digest()
    key = rawstatements.hexdigest()
    alpha, omega = semistates(data)
    output = [
        #hex(alpha%len(data)+omega/len(data)),
        #hex(omega%len(data)+alpha/len(data)),
        hex(len(data)),
        hex(alpha%len(data)),
        hex(omega%len(data)),
        hex(alpha)+hex(omega)[2:],
        hex(alpha),
        hex(omega),
        
        #key,sum
        
        hex(sum([int(numdigit, 16) for numdigit in key.split()])%alpha),
        hex(sum([int(numdigit, 16) for numdigit in key.split()])%omega),
        hex(sum([int(numdigit, 16) for numdigit in key.split()])%(alpha+omega)),
        hex(sum([int(numdigit, 16) for numdigit in key.split()])%abs(alpha-omega)),
        
        (alpha/len(data)).hex(),
        (omega/len(data)).hex()
    ]
    output.append(
        ((alpha-omega)/omega).hex()
    )
    output.append(
       ((omega-alpha)/alpha).hex()
    )
    output.append(
        (omega/alpha).hex()
    )
    output.append(
        (alpha/omega).hex()
    )
    output.append(
        ((alpha+omega)/(alpha*omega)).hex()
    )
    output.append(
        (abs(alpha-omega)/(alpha+omega)).hex()
    )
    output.append(
        hex(alpha+omega)
    )
    output.append(
        hex(alpha*omega)
    )
    return output

import random


orderChains = { # https://en.wikipedia.org/wiki/Twelve_Olympians
            "md5":["Zeus",0],
            "sha1":["Hera",1],
            "sha224":["Poseidon",2],
            "sha256":["Demeter",3],
            "sha384":["Atena",4],
            "sha512":["Apollo",5],
            "sha3_224":["Artemida",6],
            "sha3_256":["Ares",7],
            "sha3_384":["Afrodyta",8],
            "sha3_512":["Hefajstos",9],
            "blake2b":["Hermes",10],
            "blake2s":["Hestia",11]
}

redefinedOrder = list(orderChains.keys())

# print(redefinedOrder)
# print(len(redefinedOrder))
# print(random.shuffle(redefinedOrder))
# print(redefinedOrder)
for i in range(len(redefinedOrder)):
    orderChains[redefinedOrder[i]][1]=i

print(orderChains)
def protoTriangullum(data):
    return [
        standardTanglembeds(
            hashlib.new(h, data)
        ) for h in redefinedOrder
    ]
tridata = protoTriangullum(b'xxx')
print(tridata)
print(json.dumps(tridata, separators=(',', ':')))
#tridata.sort()
#print(tridata)