extern int encryptSeedCBC( IN BYTE *pbszUserKey, IN BYTE *pbszIV, IN BYTE *pbszPlainText, OUT BYTE *pbszCipherText );
extern int decryptSeedCBC( IN BYTE *pbszUserKey, IN BYTE *pbszIV, IN BYTE *pbszCipherText, OUT BYTE *pbszPlainText );
KISA_SEED_CBC.c
다음과 같이 작성해 준다.
작성에 앞서 main()함수는 제거해주도록 하자.
int encryptSeedCBC( IN BYTE *pbszUserKey, IN BYTE *pbszIV, IN BYTE *pbszPlainText, OUT BYTE *pbszCipherText )
{
printf("\n---------------------------------");
printf("\nplainText : %s\n", (char *)pbszPlainText);
int nPlainTextLen = (int)strlen((char *)pbszPlainText);// 평문의 Byte길이
printf ("\n---------------------------------");
printf ("\nSEED CBC Encryption....\n");
// 암호문의 Byte길이 - 패딩 로직때문에 16바이트 블럭으로 처리함으로 pbszCipherText는 평문보다 16바이트 커야 한다.
int nCipherTextLen = SEED_CBC_Encrypt( pbszUserKey, pbszIV, pbszPlainText, nPlainTextLen, pbszCipherText );
return nCipherTextLen;
}
int decryptSeedCBC( IN BYTE *pbszUserKey, IN BYTE *pbszIV, IN BYTE *pbszCipherText, OUT BYTE *pbszPlainText )
{
int nCipherTextLen = (int)strlen((char *)pbszCipherText);// 암호문의 Byte길이
printf ("\n---------------------------------");
printf ("\nSEED CBC Decryption....\n");
// 평문의 Byte길이
int nPlainTextLen = SEED_CBC_Decrypt( pbszUserKey, pbszIV, pbszCipherText, nCipherTextLen, pbszPlainText );
return nPlainTextLen;
}
extern int encryptSeedCBC( IN BYTE *pbszPlainText, OUT BYTE *pbszCipherText );
extern int decryptSeedCBC( IN BYTE *pbszCipherText, OUT BYTE *pbszPlainText );
KISA_SEED_CBC.c
아래 함수를 선언해 준다.
void main(void) 함수는 제거한다.
// 초기화 벡터 - 사용자가 지정하는 초기화 벡터(16 BYTE)
BYTE pbszIV[16] = {0x026, 0x08d, 0x066, 0x0a7, 0x035, 0x0a8, 0x01a, 0x081, 0x06f, 0x0ba, 0x0d9, 0x0fa, 0x036, 0x016, 0x025, 0x001};
// 사용자가 지정하는 입력 키(16bytes), 암호화 대칭키
BYTE pbszUserKey[16] = {0x088, 0x0e3, 0x04f, 0x08f, 0x008, 0x017, 0x079, 0x0f1, 0x0e9, 0x0f3, 0x094, 0x037, 0x00a, 0x0d4, 0x005, 0x089};
int encryptSeedCBC( IN BYTE *pbszPlainText, OUT BYTE *pbszCipherText )
{
printf("\n---------------------------------");
printf("\nplainText : %s\n", (char *)pbszPlainText);
int nPlainTextLen = (int)strlen((char *)pbszPlainText);// 평문의 Byte길이
printf ("\n---------------------------------");
printf ("\nSEED CBC Encryption....\n");
// 암호문의 Byte길이 - 패딩 로직때문에 16바이트 블럭으로 처리함으로 pbszCipherText는 평문보다 16바이트 커야 한다.
int nCipherTextLen = SEED_CBC_Encrypt( pbszUserKey, pbszIV, pbszPlainText, nPlainTextLen, pbszCipherText );
return nCipherTextLen;
}
int decryptSeedCBC( IN BYTE *pbszCipherText, OUT BYTE *pbszPlainText )
{
int nCipherTextLen = (int)strlen((char *)pbszCipherText);// 암호문의 Byte길이
printf ("\n---------------------------------");
printf ("\nSEED CBC Decryption....\n");
// 평문의 Byte길이
int nPlainTextLen = SEED_CBC_Decrypt( pbszUserKey, pbszIV, pbszCipherText, nCipherTextLen, pbszPlainText );
return nPlainTextLen;
}
Swift에서 사용하기 위해 KISA_SEED_CBC.h, KISA_SEED_CBC.c 파일들을 프로젝트에 추가한다.