자바의 seed 암호화 값을 c언어로 변경 질문입니다.
조회수 955회
웹에서 암호화된 값으로(seed128 cbckisa open source 사용)로 값이 넘어오면 c로 복호화(decription)을 해주려고합니다.
자바쪽
private static byte pbUserKey[] = StringUtil.StringToByteLength("indexUserKey", 16);
private static byte bszIV[] = StringUtil.StringToByteLength("indexVectorKey", 16);
private static String seed_utf = "utf-8";
byte[] enc_nt = null;
String str;
enc_nt = SEED_CBC_Encrypt(pbUserKey, bszIV, str.getBytes(seed_utf ), 0, str.getBytes(seed_utf ).length);
byte[] dec_nt = null;
dec = SEED_CBC_Decrypt(pbUserKey, bszIV, enc_nt , 0, enc_nt .length);
c쪽에서 어떻게 받아야할까요 ?
private static byte pbUserKey[] = StringUtil.StringToByteLength("indexUserKey", 16);
//--> BYTE pbUserKey[] = 위쪽 뒤를 어떻게 받아야 하는지 궁금합니다.
enc_nt = SEED_CBC_Encrypt(pbUserKey, bszIV, str.getBytes(seed_utf), 0, str.getBytes(seed_utf).length);
위에서 str.getBytes(seed_utf)
는 c에서 어떻게 받아야할까요? 그리고 .length
도요.
아래처럼 했는데 안되서요.
enc_nt = SEED_CBC_Encrypt(pbszUserKey, pbszIV, seed_utf , 0, strlen(seed_utf ));
dec_nt = SEED_CBC_Decrypt(pbUserKey, bszIV, enc_nt , 0, strlen(enc_nt ));
답변부탁드립니다.
-
(•́ ✖ •̀)
알 수 없는 사용자 - 〉
1 답변
-
자바는 유니코드(utf16be) 를 사용합니다.
즉 ansi 용인 strlen 대신 wcslen 을 사용해야 합니다.
자바, c간의 통신이라면 인코딩에 신경써야 합니다.
자바는 os에 따른 부작용이 적지만 c는 os 설정도 신경써야 합니다.
getBytes 는 말그대로 암/복호화 작업을 위해 바이트의 배열로 변환하는 겁니다.
length 는 배열의 길이를 구하는 것이구요.
c에서 테스트를 암호화된 문자열을 받아다가 테스트 먼저 하세요
c에서 암/복호화 테스트가 문제 없다면 자바 <-> c 간의 데이터 전송을 고민하세요.
댓글 입력