private static bool testForBits_getMultiHash40(ref int pc, int hc, SHA3 sha) { var size = 32; var sizeb = size << 3; byte[] result = null; byte[] inData = new byte[size]; int[,] counts = new int[sizeb, sizeb]; BytesBuilder.ToNull(inData); for (int i = 0; i < sizeb; i++) { setBitInArray(inData, i); for (int j = 0; j < sizeb; j++) { if (i == j) { continue; } setBitInArray(inData, j); SHA3.getMultiHash40(inData, out result, ref pc, hc, sha, size); //SHA3.getMultiHash20(inData, out result, ref pc, hc, sha, size); //result = sha.getHash512(inData); //result = new testCiphers.RC4(inData).getGamma(size); toResult(sizeb, i, j, result, counts); setBitInArray(inData, j, false); } setBitInArray(inData, i, false); } double суммарнаяВероятность, минимальнаяВероятность, множительВероятностей, отклонениеОтЭталона, отклонениеОтЭталонаВниз, отклонениеОтЭталонаВверх; double[,] вероятность; getCountsResult(sizeb, counts, out вероятность, out минимальнаяВероятность, out множительВероятностей, out суммарнаяВероятность, out отклонениеОтЭталона, out отклонениеОтЭталонаВниз, out отклонениеОтЭталонаВверх); if (множительВероятностей > 1.01 || суммарнаяВероятность < 0.01 || отклонениеОтЭталонаВниз > 0.10 || отклонениеОтЭталонаВверх > 0.10 || минимальнаяВероятность < 0.001) { return(false); } return(true); }