Post
Topic
Board Announcements (Altcoins)
Re: [ANN][FC] Fuguecoin - Fugue256 hash, Launched! NO PRE-M! CPU/GPU minable!
by
Sanasol
on 24/03/2014, 22:20:08 UTC
Code:
template
inline uint256 Hash4(const T1 p1begin, const T1 p1end,
                    const T2 p2begin, const T2 p2end)
{
    static unsigned char pblank[1];
    uint256 hash1;
    SHA256_CTX ctx;
    SHA256_Init(&ctx);
    SHA256_Update(&ctx, (p1begin == p1end ? pblank : (unsigned char*)&p1begin[0]), (p1end - p1begin) * sizeof(p1begin[0]));
    SHA256_Update(&ctx, (p2begin == p2end ? pblank : (unsigned char*)&p2begin[0]), (p2end - p2begin) * sizeof(p2begin[0]));
    SHA256_Final((unsigned char*)&hash1, &ctx);
    uint256 hash2;
    SHA256((unsigned char*)&hash1, sizeof(hash1), (unsigned char*)&hash2);
    return hash2;
}

cant do it in python, maybe someone can help?)


Code:
anycoin code
template
inline uint256 Hash(const T1 pbegin, const T1 pend)
{
    static unsigned char pblank[1];
    uint256 hash1;
    SHA256((pbegin == pend ? pblank : (unsigned char*)&pbegin[0]), (pend - pbegin) * sizeof(pbegin[0]), (unsigned char*)&hash1);
    uint256 hash2;
    SHA256((unsigned char*)&hash1, sizeof(hash1), (unsigned char*)&hash2);
    return hash2;
}

Python same code:
def double_sha256(s):
    return SHA256.new(SHA256.new(s).digest()).digest()

# Based on CBlock::BuildMerkleTree().
def merkle(hashes):
    while len(hashes) > 1:
        size = len(hashes)
        out = []
        for i in xrange(0, size, 2):
            i2 = min(i + 1, size - 1)
            out.append(double_sha256(hashes[i] + hashes[i2]))
        hashes = out
    return hashes and hashes[0]