마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

안드로이드와 c++ aes 암호화 복호화

0 추천

안드로이드에서 aes로 암호화한 메시지를 c++서버가 받아서 복호화하도록 하고싶습니다.

자바쪽은 아래처럼 했는데 c++은 어떻게 해야될지 모르겠네요.

 

http://social.msdn.microsoft.com/Forums/ko-KR/bd1722e7-07b3-4119-b7de-10788f9f6e36/aes-string-encryption-in-c?forum=windowsmobiledev

여길보고 해보긴 했는데 암호화 복호화는 제대로 됩니다만 암호화했을 때 특수문자, 네모, 한자들이 막 나옵니다.  abcd를 암호화해도 자바랑 같은 값이 안나옵니다.   자바에서 byte형식으로 암호화한 [B@612679d6을 통신으로 보내줬을 때 복호화하면 abcd1234가 나오도록 해야되는데 말이죠.  (저기 byteArrayToHex메소드를 써도...)  키 사이즈나 문자형식이 문제가 있는 것 같은데 해보신분께 도움을 구합니다.  자바랑 어떻게 맞춰줘야하는지...

 

아래는 c++ 소스입니다.

extern "C"{
#include "libcrypt\aes.h"
}
#include <iostream>
#include <string.h>
#include <stdio.h>
#include <Windows.h>
 
using namespace std;
void main(){
aes_context ctx;
WCHAR *in=L"abcd1234";
WCHAR *out;
WCHAR *secret_key=L"abcdefgh12345678";
BYTE * buf=(BYTE*)malloc(16);
BYTE * keybuff=(BYTE*)malloc(16);
 
memset(buf,0, 16);
 
memset(keybuff,0,16);
 
memcpy( buf, in, wcslen(in)*2);
 
/* Set the key */
 
memcpy( keybuff, secret_key, wcslen(secret_key)*2);
 
aes_set_key( &ctx, keybuff, 128);
 
/* Encrypt */
 
aes_encrypt( &ctx, buf, buf );
out=(WCHAR*)buf;
MessageBox(NULL, (WCHAR*)out, NULL, 0);
 
aes_decrypt( &ctx, buf, buf );
out=(WCHAR*)buf;
MessageBox(NULL, (WCHAR*)out, NULL, 0);
 
system("pause");
}
qnfw3174 (690 포인트) 님이 2014년 4월 24일 질문

2개의 답변

+1 추천
 
채택된 답변

문자열을 WCHAR로 사용하시는 이유가 있나요? 


WCHAR를 사용한 값을 byte로 환산해 표시하면서 문제가 되는 것으로 추정됩니다.

사악미소 (65,330 포인트) 님이 2014년 4월 25일 답변
qnfw3174님이 2015년 4월 11일 채택됨
+1 추천
서버로 전송할 때 인코딩 하여 전송하고, 서버에서는 수신하여 디코딩하여 진행해보심이 어떨까싶네요.
인연 (31,880 포인트) 님이 2014년 4월 25일 답변
...