You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
34 lines
592 B
34 lines
592 B
// gf256.cpp - written and placed in the public domain by Wei Dai |
|
|
|
#include "pch.h" |
|
#include "gf256.h" |
|
|
|
NAMESPACE_BEGIN(CryptoPP) |
|
|
|
GF256::Element GF256::Multiply(Element a, Element b) const |
|
{ |
|
word result = 0, t = b; |
|
|
|
for (unsigned int i=0; i<8; i++) |
|
{ |
|
result <<= 1; |
|
if (result & 0x100) |
|
result ^= m_modulus; |
|
|
|
t <<= 1; |
|
if (t & 0x100) |
|
result ^= a; |
|
} |
|
|
|
return (GF256::Element) result; |
|
} |
|
|
|
GF256::Element GF256::MultiplicativeInverse(Element a) const |
|
{ |
|
Element result = a; |
|
for (int i=1; i<7; i++) |
|
result = Multiply(Square(result), a); |
|
return Square(result); |
|
} |
|
|
|
NAMESPACE_END
|
|
|