00001
00002
00003 #include "pch.h"
00004 #include "gf256.h"
00005
00006 NAMESPACE_BEGIN(CryptoPP)
00007
00008 GF256::Element GF256::Multiply(Element a, Element b) const
00009 {
00010 word result = 0, t = b;
00011
00012 for (unsigned int i=0; i<8; i++)
00013 {
00014 result <<= 1;
00015 if (result & 0x100)
00016 result ^= m_modulus;
00017
00018 t <<= 1;
00019 if (t & 0x100)
00020 result ^= a;
00021 }
00022
00023 return (GF256::Element) result;
00024 }
00025
00026 GF256::Element GF256::MultiplicativeInverse(Element a) const
00027 {
00028 Element result = a;
00029 for (int i=1; i<7; i++)
00030 result = Multiply(Square(result), a);
00031 return Square(result);
00032 }
00033
00034 NAMESPACE_END