x919_mac.cpp

来自「含有多种公开密钥算法、多种块加密、多种数据流加密、多种HASH函数、多种Chec」· C++ 代码 · 共 91 行

CPP
91
字号
/************************************************** ANSI X9.19 MAC Source File                     ** (C) 1999-2002 The Botan Project                **************************************************/#include <botan/x919_mac.h>#include <botan/lookup.h>namespace Botan {/************************************************** Update a ANSI X9.19 MAC Computation            **************************************************/void ANSI_X919_MAC::add_data(const byte input[], u32bit length)   {   u32bit xored = std::min(8 - position, length);   xor_buf(state + position, input, xored);   position += xored;   if(position < 8) return;   e->encrypt(state);   input += xored;   length -= xored;   while(length >= 8)      {      xor_buf(state, input, 8);      e->encrypt(state);      input += 8;      length -= 8;      }   xor_buf(state, input, length);   position = length;   }/************************************************** Finalize a ANSI X9.19 MAC Computation          **************************************************/void ANSI_X919_MAC::final_result(byte mac[])   {   if(position)      e->encrypt(state);   d->decrypt(state, mac);   e->encrypt(mac);   state.clear();   position = 0;   }/************************************************** ANSI X9.19 MAC Key Schedule                    **************************************************/void ANSI_X919_MAC::key(const byte key[], u32bit length)   {   e->set_key(key, 8);   if(length == 8) d->set_key(key, 8);   else            d->set_key(key + 8, 8);   }/************************************************** Clear memory of sensitive data                 **************************************************/void ANSI_X919_MAC::clear() throw()   {   e->clear();   d->clear();   state.clear();   position = 0;   }/************************************************** ANSI X9.19 MAC Constructor                     **************************************************/ANSI_X919_MAC::ANSI_X919_MAC() : MessageAuthenticationCode(8, 8, 16, 8)   {   e = get_block_cipher("DES");   d = get_block_cipher("DES");   position = 0;   }/************************************************** ANSI X9.19 MAC Destructor                      **************************************************/ANSI_X919_MAC::~ANSI_X919_MAC()   {   delete e;   delete d;   }}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?