Proud::CCryptoAes 클래스 참조

Public 타입

enum  EncryptMode { ECB = 0, CBC = 1, CFB = 2 }
 
enum  { DEFAULT_BLOCK_SIZE = 16 }
 
enum  { MAX_BLOCK_SIZE = 32, MAX_ROUNDS = 14, MAX_KC = 8, MAX_BC = 8 }
 

정적 Public 멤버 함수

static PROUD_API bool ExpandFrom (CCryptoAesKey &outKey, const uint8_t *const inputKey, int keyLength=DEFAULT_BLOCK_SIZE, int blockSize=DEFAULT_BLOCK_SIZE)
 
static PROUD_API int GetEncryptSize (const CCryptoAesKey &key, int inputLength)
 
static PROUD_API bool Encrypt (const CCryptoAesKey &key, const uint8_t *const input, int inputLength, uint8_t *output, int &outputLength, uint8_t *initializationVector=NULL, int initializationVectorLength=0, EncryptMode encryptMode=ECB)
 
static PROUD_API bool Decrypt (const CCryptoAesKey &key, const uint8_t *const input, int inputLength, uint8_t *output, int &outputLength, uint8_t *initializationVector=NULL, int initializationVectorLength=0, EncryptMode encryptMode=ECB)
 
static PROUD_API bool EncryptByteArray (const CCryptoAesKey &key, const ByteArray &input, ByteArray &output, uint8_t *initializationVector=NULL, int initializationVectorLength=0, EncryptMode encryptMode=ECB)
 
static PROUD_API bool DecryptByteArray (const CCryptoAesKey &key, const ByteArray &input, ByteArray &output, uint8_t *initializationVector=NULL, int initializationVectorLength=0, EncryptMode encryptMode=ECB)
 
static PROUD_API bool EncryptMessage (const CCryptoAesKey &key, const CMessage &input, CMessage &output, int offset, uint8_t *initializationVector=NULL, int initializationVectorLength=0, EncryptMode encryptMode=ECB)
 
static PROUD_API bool DecryptMessage (const CCryptoAesKey &key, const CMessage &input, CMessage &output, int offset, uint8_t *initializationVector=NULL, int initializationVectorLength=0, EncryptMode encryptMode=ECB)
 

상세한 설명

Rijndael(레인달)은 블럭 암호화 알고리즘입니다. 레인달은 Joan Daeden과 Vincent Rijmen에 의해 만들어졌고 AES의 후보였습니다. 이 암호화 알고리즘은 다양한 크기의 블럭 길이와 키 길이를 가집니다. 키 길이는 128,192.256비트이며 블럭의 크기는 128,192,256비트입니다. 키 길이와 블록 길이는 다양하게 선택되어도 됩니다. 블록 길이, 키 길이 모두 32비트의 배수로 쉽게 확장 가능합니다.

레인달은 매우 다양한 종류의 하드웨어 프로세서에서 매우 효과적으로 구현될 수 있습니다.

이 구현은 Crptix tookit에 쓰인 Javaj 구현을 기초로 제작되었으며 이는 아래에서 찾을 수 있습니다. http://www.efgh.com/software/rijndael.zip

Java 코드 작성자: Raif S. Naffah, Paulo S. L. M. Barreto

이 구현은 원저작자에 의해 공개된 KAT 테스트에서 시험되었으며 결과는 이상무였습니다.

멤버 열거형 문서화

  • ECB, CBC, CFB 모드
  • ECB 모드 : 같은 블럭을 두번 암호화 하면 본래의 암호화 되지 않은 본문이 나옵니다.
  • CBC 모드 : 이전 블럭과 xor연산을 후 암호화 합니다.
  • CFB 모드 : 해당 블럭을 암호화 후 이전 블럭과 xor연산을 합니다.

멤버 함수 문서화

static PROUD_API bool Proud::CCryptoAes::Decrypt ( const CCryptoAesKey key,
const uint8_t *const  input,
int  inputLength,
uint8_t *  output,
int &  outputLength,
uint8_t *  initializationVector = NULL,
int  initializationVectorLength = 0,
EncryptMode  encryptMode = ECB 
)
static

데이터를 복호화 합니다.

매개변수
key대칭키 입니다.
input암호화된 메시지입니다.
inputLength암호화된 메시지의 사이즈입니다.
output복호화된 결과값 입니다.
outputLength복호화된 결과값의 사이즈입니다.
initializationVectorCBC, CFB 모드에서 암호화를 위한 초기화 할때 사용하는 벡터입니다.
initializationVectorLengthinitializationVector의 바이트 길이 입니다.
encryptMode암호화 모드 입니다. ECB, CBC, CFB 모드가 있습니다.
static PROUD_API bool Proud::CCryptoAes::DecryptByteArray ( const CCryptoAesKey key,
const ByteArray input,
ByteArray output,
uint8_t *  initializationVector = NULL,
int  initializationVectorLength = 0,
EncryptMode  encryptMode = ECB 
)
static

ByteArray를 복호화 합니다.

매개변수
key대칭키 입니다.
input암호화된 메시지입니다.
output복호화된 결과값 입니다.
initializationVectorCBC, CFB 모드에서 암호화를 위한 초기화 할때 사용하는 벡터입니다.
initializationVectorLengthinitializationVector의 바이트 길이 입니다.
encryptMode암호화 모드 입니다. ECB, CBC, CFB 모드가 있습니다.
static PROUD_API bool Proud::CCryptoAes::DecryptMessage ( const CCryptoAesKey key,
const CMessage input,
CMessage output,
int  offset,
uint8_t *  initializationVector = NULL,
int  initializationVectorLength = 0,
EncryptMode  encryptMode = ECB 
)
static

Message를 복호화 합니다.

매개변수
key대칭키 입니다.
input암호화된 메시지입니다.
output복호화된 결과값 입니다.
offset암호화된 메시지에서 복호화를 시작할 위치
initializationVectorCBC, CFB 모드에서 암호화를 위한 초기화 할때 사용하는 벡터입니다.
initializationVectorLengthinitializationVector의 바이트 길이 입니다.
encryptMode암호화 모드 입니다. ECB, CBC, CFB 모드가 있습니다.
static PROUD_API bool Proud::CCryptoAes::Encrypt ( const CCryptoAesKey key,
const uint8_t *const  input,
int  inputLength,
uint8_t *  output,
int &  outputLength,
uint8_t *  initializationVector = NULL,
int  initializationVectorLength = 0,
EncryptMode  encryptMode = ECB 
)
static

데이터를 암호화 합니다.

매개변수
key대칭키입니다.
input평문 메시지입니다.
inputLength평문의 사이즈입니다.
output암호화된 결과값입니다.
outputLength암호화된 결과의 사이즈입니다.
initializationVectorCBC, CFB 모드에서 암호화를 위한 초기화 할때 사용하는 벡터입니다.
initializationVectorLengthinitializationVector의 바이트 길이 입니다.
encryptMode암호화 모드 입니다. ECB, CBC, CFB 모드가 있습니다.
static PROUD_API bool Proud::CCryptoAes::EncryptByteArray ( const CCryptoAesKey key,
const ByteArray input,
ByteArray output,
uint8_t *  initializationVector = NULL,
int  initializationVectorLength = 0,
EncryptMode  encryptMode = ECB 
)
static

ByteArray를 암호화 합니다.

매개변수
key대칭키입니다.
input평문 메시지입니다.
output암호화된 결과값입니다.
initializationVectorCBC, CFB 모드에서 암호화를 위한 초기화 할때 사용하는 벡터입니다.
initializationVectorLengthinitializationVector의 바이트 길이 입니다.
encryptMode암호화 모드 입니다. ECB, CBC, CFB 모드가 있습니다.
static PROUD_API bool Proud::CCryptoAes::EncryptMessage ( const CCryptoAesKey key,
const CMessage input,
CMessage output,
int  offset,
uint8_t *  initializationVector = NULL,
int  initializationVectorLength = 0,
EncryptMode  encryptMode = ECB 
)
static

Message를 암호화 합니다.

매개변수
key대칭키입니다.
input평문 메시지입니다.
output암호화된 결과값입니다.
offset평문 메시지에서 암호화를 시작할 위치
initializationVectorCBC, CFB 모드에서 암호화를 위한 초기화 할때 사용하는 벡터입니다.
initializationVectorLengthinitializationVector의 바이트 길이 입니다.
encryptMode암호화 모드 입니다. ECB, CBC, CFB 모드가 있습니다.
static PROUD_API bool Proud::CCryptoAes::ExpandFrom ( CCryptoAesKey outKey,
const uint8_t *const  inputKey,
int  keyLength = DEFAULT_BLOCK_SIZE,
int  blockSize = DEFAULT_BLOCK_SIZE 
)
static

키와 블록의 길이 128비트일 때 - 9라운드

  • 키 또는 블록의 길이가 192비트일 때 - 11라운드
  • 키 또는 블록의 길이가 256비트일 때 - 13라운드
  • 블럭사이즈 : 한번에 암호화 되는 사이즈
매개변수
outKey생성된 암호화 키가 저장됩니다..
inputKey128/192/256-bit 를 사용할 수 있으며 초기 Aes키를 만들기 위한 랜덤 블럭 데이터입니다.
keyLength16, 24 또는 32 bytes 입니다.
blockSizeAes 알고리즘 내의 블럭 사이즈 입니다. (16, 24 or 32 bytes).
static PROUD_API int Proud::CCryptoAes::GetEncryptSize ( const CCryptoAesKey key,
int  inputLength 
)
static
매개변수
key대칭키입니다.
inputLength암호화할 데이터의 길이
반환값
암호화된 데이터의 길이