private void bytePad(byte[] X, int w) { byte[] bytes = XofUtilities.LeftEncode(w); BlockUpdate(bytes, 0, bytes.Length); byte[] encX = encode(X); BlockUpdate(encX, 0, encX.Length); int required = w - ((bytes.Length + encX.Length) % w); if (required > 0 && required != w) { while (required > padding.Length) { BlockUpdate(padding, 0, padding.Length); required -= padding.Length; } BlockUpdate(padding, 0, required); } }
private static byte[] encode(byte[] X) { return(Arrays.Concatenate(XofUtilities.LeftEncode(X.Length * 8), X)); }