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 테스트에서 시험되었으며 결과는 이상무였습니다.
|
static |
데이터를 복호화 합니다.
key | 대칭키 입니다. |
input | 암호화된 메시지입니다. |
inputLength | 암호화된 메시지의 사이즈입니다. |
output | 복호화된 결과값 입니다. |
outputLength | 복호화된 결과값의 사이즈입니다. |
initializationVector | CBC, CFB 모드에서 암호화를 위한 초기화 할때 사용하는 벡터입니다. |
initializationVectorLength | initializationVector의 바이트 길이 입니다. |
encryptMode | 암호화 모드 입니다. ECB, CBC, CFB 모드가 있습니다. |
|
static |
ByteArray를 복호화 합니다.
key | 대칭키 입니다. |
input | 암호화된 메시지입니다. |
output | 복호화된 결과값 입니다. |
initializationVector | CBC, CFB 모드에서 암호화를 위한 초기화 할때 사용하는 벡터입니다. |
initializationVectorLength | initializationVector의 바이트 길이 입니다. |
encryptMode | 암호화 모드 입니다. ECB, CBC, CFB 모드가 있습니다. |
|
static |
Message를 복호화 합니다.
key | 대칭키 입니다. |
input | 암호화된 메시지입니다. |
output | 복호화된 결과값 입니다. |
offset | 암호화된 메시지에서 복호화를 시작할 위치 |
initializationVector | CBC, CFB 모드에서 암호화를 위한 초기화 할때 사용하는 벡터입니다. |
initializationVectorLength | initializationVector의 바이트 길이 입니다. |
encryptMode | 암호화 모드 입니다. ECB, CBC, CFB 모드가 있습니다. |
|
static |
데이터를 암호화 합니다.
key | 대칭키입니다. |
input | 평문 메시지입니다. |
inputLength | 평문의 사이즈입니다. |
output | 암호화된 결과값입니다. |
outputLength | 암호화된 결과의 사이즈입니다. |
initializationVector | CBC, CFB 모드에서 암호화를 위한 초기화 할때 사용하는 벡터입니다. |
initializationVectorLength | initializationVector의 바이트 길이 입니다. |
encryptMode | 암호화 모드 입니다. ECB, CBC, CFB 모드가 있습니다. |
|
static |
ByteArray를 암호화 합니다.
key | 대칭키입니다. |
input | 평문 메시지입니다. |
output | 암호화된 결과값입니다. |
initializationVector | CBC, CFB 모드에서 암호화를 위한 초기화 할때 사용하는 벡터입니다. |
initializationVectorLength | initializationVector의 바이트 길이 입니다. |
encryptMode | 암호화 모드 입니다. ECB, CBC, CFB 모드가 있습니다. |
|
static |
Message를 암호화 합니다.
key | 대칭키입니다. |
input | 평문 메시지입니다. |
output | 암호화된 결과값입니다. |
offset | 평문 메시지에서 암호화를 시작할 위치 |
initializationVector | CBC, CFB 모드에서 암호화를 위한 초기화 할때 사용하는 벡터입니다. |
initializationVectorLength | initializationVector의 바이트 길이 입니다. |
encryptMode | 암호화 모드 입니다. ECB, CBC, CFB 모드가 있습니다. |
|
static |
키와 블록의 길이 128비트일 때 - 9라운드
outKey | 생성된 암호화 키가 저장됩니다.. |
inputKey | 128/192/256-bit 를 사용할 수 있으며 초기 Aes키를 만들기 위한 랜덤 블럭 데이터입니다. |
keyLength | 16, 24 또는 32 bytes 입니다. |
blockSize | Aes 알고리즘 내의 블럭 사이즈 입니다. (16, 24 or 32 bytes). |
|
static |
key | 대칭키입니다. |
inputLength | 암호화할 데이터의 길이 |