1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
| #include <jni.h>
#include <openssl/md5.h>
#include <string.h>
JNIEXPORT jstring JNICALL Java_MyString_md5(JNIEnv *env, jobject obj) {
jclass thisClass = (*env)->GetObjectClass(env, obj);
jfieldID fidValue = (*env)->GetFieldID(env, thisClass, "value", "Ljava/lang/String;");
if (NULL == fidValue) {
return NULL;
}
jstring value = (*env)->GetObjectField(env, obj, fidValue);
const unsigned char *data = (*env)->GetStringUTFChars(env, value, NULL);
MD5_CTX ctx;
unsigned char md[16];
char buf[33]= {'\0'};
char tmp[3]= {'\0'};
int i;
MD5_Init(&ctx);
MD5_Update(&ctx,data,strlen((char *)data));
MD5_Final(md,&ctx);
for( i=0; i<16; i++ ) {
sprintf(tmp,"%02X",md[i]);
strcat(buf,tmp);
}
value = (*env)->NewStringUTF(env, buf);
return value;
}
|