35 lines
558 B
C
35 lines
558 B
C
|
#ifndef DESCBC_H
|
||
|
#define DESCBC_H
|
||
|
|
||
|
#include "des.h"
|
||
|
|
||
|
class DESCBC
|
||
|
{
|
||
|
public:
|
||
|
DESCBC(ui64 key, ui64 iv) : des(key), iv(iv), last_block(iv) {}
|
||
|
inline ui64 encrypt(ui64 block)
|
||
|
{
|
||
|
last_block = des.encrypt(block ^ last_block);
|
||
|
return last_block;
|
||
|
}
|
||
|
|
||
|
inline ui64 decrypt(ui64 block)
|
||
|
{
|
||
|
ui64 result = des.decrypt(block) ^ last_block;
|
||
|
last_block = block;
|
||
|
return result;
|
||
|
}
|
||
|
|
||
|
inline void reset()
|
||
|
{
|
||
|
last_block = iv;
|
||
|
}
|
||
|
|
||
|
private:
|
||
|
DES des;
|
||
|
ui64 iv;
|
||
|
ui64 last_block;
|
||
|
};
|
||
|
|
||
|
#endif // DESCBC_H
|