mirror of
https://github.com/Xevion/easy7zip.git
synced 2025-12-06 13:14:59 -06:00
40 lines
725 B
C++
Executable File
40 lines
725 B
C++
Executable File
// AES_CBC.h
|
|
|
|
#ifndef __AES_CBC_H
|
|
#define __AES_CBC_H
|
|
|
|
#include "aescpp.h"
|
|
|
|
class CAES_CBC: public AESclass
|
|
{
|
|
protected:
|
|
Byte _prevBlock[16];
|
|
public:
|
|
void Init(const Byte *iv)
|
|
{
|
|
for (int i = 0; i < 16; i++)
|
|
_prevBlock[i] = iv[i];
|
|
}
|
|
void Encode(const Byte *inBlock, Byte *outBlock)
|
|
{
|
|
int i;
|
|
for (i = 0; i < 16; i++)
|
|
_prevBlock[i] ^= inBlock[i];
|
|
enc_blk(_prevBlock, outBlock);
|
|
for (i = 0; i < 16; i++)
|
|
_prevBlock[i] = outBlock[i];
|
|
}
|
|
|
|
void Decode(const Byte *inBlock, Byte *outBlock)
|
|
{
|
|
dec_blk(inBlock, outBlock);
|
|
int i;
|
|
for (i = 0; i < 16; i++)
|
|
outBlock[i] ^= _prevBlock[i];
|
|
for (i = 0; i < 16; i++)
|
|
_prevBlock[i] = inBlock[i];
|
|
}
|
|
};
|
|
|
|
#endif
|