42 lines
738 B
C++
Executable File
42 lines
738 B
C++
Executable File
/**
|
|
* @RDE_HEADER@
|
|
* $Id$
|
|
* $HeadURL$
|
|
* $Author$
|
|
*/
|
|
#pragma once
|
|
|
|
#include <QtGlobal>
|
|
#include "pwscommon_export.h"
|
|
|
|
namespace ProjectionWorkstation
|
|
{
|
|
|
|
class PWSCOMMON_EXPORT DES
|
|
{
|
|
public:
|
|
explicit DES(quint64 key);
|
|
|
|
quint64 des(quint64 block, bool mode);
|
|
|
|
quint64 encrypt(quint64 block);
|
|
quint64 decrypt(quint64 block);
|
|
|
|
static quint64 encrypt(quint64 block, quint64 key);
|
|
static quint64 decrypt(quint64 block, quint64 key);
|
|
|
|
protected:
|
|
void keygen(quint64 key);
|
|
|
|
static quint64 ip(quint64 block);
|
|
static quint64 fp(quint64 block);
|
|
|
|
static void feistel(quint32 &L, quint32 &R, quint32 F);
|
|
static quint32 f(quint32 R, quint64 k);
|
|
|
|
private:
|
|
quint64 m_subKey[16]; // 48 bits each
|
|
};
|
|
|
|
} // ProjectionWorkstation
|