public static bool IsCrcValid(BinaryPolynomial polynomialForCheck) { var polynomial = polynomialForCheck.Copy(); var divisionResult = BinaryPolynomial.Division(polynomial, GeneratorPolynomial); return(divisionResult.Item2.IsNullPolynomial); }
public static BinaryPolynomial GenerateCrc(BinaryPolynomial polynomial) { var polynomialWithPaddingShift = polynomial.Copy().RiseDegree(Padding); var divisionResult = BinaryPolynomial.Division(polynomialWithPaddingShift, GeneratorPolynomial); return(polynomialWithPaddingShift + divisionResult.Item2); }
public byte Multiply(byte firstNumber, byte secondNumber) { BinaryPolynomial firstNumberPolynomial = firstNumber; BinaryPolynomial secondNumberPolynomial = secondNumber; var multiplicationResult = firstNumberPolynomial * secondNumberPolynomial; var multiplicationByModule = multiplicationResult % IrreduciblePolynomial; return(multiplicationByModule); }
public void DivisionShouldWorkCorrect(uint originalNumber, uint originalDivision, uint expectedResult) { //arrange BinaryPolynomial number = originalNumber; BinaryPolynomial division = originalDivision; //act var actualResult = number / division; //assert Assert.Equal(expectedResult, actualResult.Value); }
public byte Divide(byte firstNumber, byte secondNumber) { BinaryPolynomial firstNumberPolynomial = firstNumber; BinaryPolynomial secondNumberPolynomial = secondNumber; BinaryPolynomial secondNumberPolynomialInverse = MultiplicativeInverseUsingExponentiation(secondNumberPolynomial); var multiplicationResult = firstNumberPolynomial * secondNumberPolynomialInverse; var multiplicationByModule = multiplicationResult % IrreduciblePolynomial; return(multiplicationByModule); }
public void MultiplicationShouldWorkCorrect(uint originalFirstNumber, uint originalSecondNumber, uint expectedResult, string expectedPolynomial) { //arrange BinaryPolynomial firstNumber = originalFirstNumber; BinaryPolynomial secondNumber = originalSecondNumber; //act var actualResult = firstNumber * secondNumber; //assert Assert.Equal(expectedResult, actualResult.Value); Assert.Equal(expectedPolynomial, actualResult.ToString()); }