-
Notifications
You must be signed in to change notification settings - Fork 497
/
X11.cs
67 lines (59 loc) · 2.3 KB
/
X11.cs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
#region License
//
// CoiniumServ - Crypto Currency Mining Pool Server Software
// Copyright (C) 2013 - 2014, CoiniumServ Project - http://www.coinium.org
// http://www.coiniumserv.com - https://github.com/CoiniumServ/CoiniumServ
//
// This software is dual-licensed: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version.
//
// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
//
// For the terms of this license, see licenses/gpl_v3.txt.
//
// Alternatively, you can license this software under a commercial
// license or white-label it as set out in licenses/commercial.txt.
//
#endregion
using System.Collections.Generic;
using HashLib;
namespace CoiniumServ.Algorithms.Implementations
{
public sealed class X11 : HashAlgorithmBase
{
public override uint Multiplier { get; protected set; }
private readonly List<IHash> _hashers;
public X11()
{
_hashers = new List<IHash>
{
HashFactory.Crypto.SHA3.CreateBlake512(),
HashFactory.Crypto.SHA3.CreateBlueMidnightWish512(),
HashFactory.Crypto.SHA3.CreateGroestl512(),
HashFactory.Crypto.SHA3.CreateSkein512(),
HashFactory.Crypto.SHA3.CreateJH512(),
HashFactory.Crypto.SHA3.CreateKeccak512(),
HashFactory.Crypto.SHA3.CreateLuffa512(),
HashFactory.Crypto.SHA3.CreateCubeHash512(),
HashFactory.Crypto.SHA3.CreateSHAvite3_512(),
HashFactory.Crypto.SHA3.CreateSIMD512(),
HashFactory.Crypto.SHA3.CreateEcho512(),
};
Multiplier = 1;
}
public override byte[] Hash(byte[] input)
{
var buffer = input;
foreach (var hasher in _hashers)
{
buffer = hasher.ComputeBytes(buffer).GetBytes();
}
return buffer;
}
}
}