Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <stdlib.h>
- #include <jni.h>
- #include <string.h>
- #include "Rijndael.h"
- #define LOGI(...) __android_log_print(ANDROID_LOG_INFO,LOG_TAG,__VA_ARGS__)
- extern "C" {
- JNIEXPORT jstring JNICALL
- Java_sk_sajmon_osmz_Main_init( JNIEnv *env, jobject obj );
- JNIEXPORT jbyteArray JNICALL
- Java_sk_sajmon_osmz_Main_encode( JNIEnv *env, jobject obj, jstring key, jstring msg, jint size, jint method );
- JNIEXPORT jbyteArray JNICALL
- Java_sk_sajmon_osmz_Main_decode( JNIEnv *env, jobject obj, jstring key, jstring encoded, jint size, jint method );
- }
- JNIEXPORT jstring JNICALL
- Java_sk_sajmon_osmz_Main_init(JNIEnv *env, jobject obj ) {
- const char* nativeString = "Library initialised";
- return env->NewStringUTF(nativeString);
- }
- JNIEXPORT jbyteArray JNICALL
- Java_sk_sajmon_osmz_Main_decode( JNIEnv *env, jobject obj, jstring key, jstring msg, jint size, jint method ) {
- // zakodujem text
- CRijndael aes;
- const char* mKey = env->GetStringUTFChars(key, JNI_FALSE);
- // nastavim kluc
- aes.MakeKey(mKey, CRijndael::sm_chain0, 16, 16);
- char szDataIn1[size];
- char szDataIn[size];
- char szDataOut[size];
- memset(szDataIn, 0, size);
- memset(szDataOut, 0, size);
- const char* temp = env->GetStringUTFChars(msg, JNI_FALSE);
- char* nativeString = strdup(temp);
- strcpy(szDataIn1, nativeString);
- /*for (int j = 0; j < sizeof(temp); j++) {
- szDataIn1[j] = temp[j];
- }*/
- strcpy(szDataIn, szDataIn1);
- // ECB kodovanie
- if (method == 0) {
- memset(szDataOut, 0, size);
- aes.Encrypt(szDataIn, szDataOut, size - 1, CRijndael::ECB);
- memset(szDataIn, 0, size);
- aes.Decrypt(szDataOut, szDataIn, size - 1, CRijndael::ECB);
- }
- if (method == 1) {
- memset(szDataOut, 0, size);
- aes.Encrypt(szDataIn, szDataOut, size - 1, CRijndael::CBC);
- memset(szDataIn, 0, size);
- aes.Decrypt(szDataOut, szDataIn, size - 1, CRijndael::CBC);
- }
- if (method == 2) {
- memset(szDataOut, 0, size);
- aes.Encrypt(szDataIn, szDataOut, size - 1, CRijndael::CFB);
- memset(szDataIn, 0, size);
- aes.Decrypt(szDataOut, szDataIn, size - 1, CRijndael::CFB);
- }
- // ulozim do pomocneho pola dekodovany text
- int len = strlen(szDataIn);
- char decodedText[len];
- for (int i = 0; i < len; i++) {
- decodedText[i] = szDataIn[i];
- }
- jbyteArray trackIDArray = env->NewByteArray(strlen(decodedText));
- env->SetByteArrayRegion(trackIDArray, 0, strlen(decodedText), (const jbyte*) decodedText);
- return trackIDArray;
- }
- JNIEXPORT jbyteArray JNICALL
- Java_sk_sajmon_osmz_Main_encode( JNIEnv *env, jobject obj, jstring key, jstring msg, jint size, jint method ) {
- // zakodujem text
- CRijndael aes;
- const char* mKey = env->GetStringUTFChars(key, JNI_FALSE);
- // nastavim kluc
- aes.MakeKey(mKey, CRijndael::sm_chain0, 16, 16);
- char szDataIn1[size];
- char szDataIn[size];
- char szDataOut[size];
- memset(szDataIn, 0, size);
- memset(szDataOut, 0, size);
- const char* temp = env->GetStringUTFChars(msg, JNI_FALSE);
- char* nativeString = strdup(temp);
- strcpy(szDataIn1, nativeString);
- /*for (int j = 0; j < sizeof(temp); j++) {
- szDataIn1[j] = temp[j];
- }*/
- strcpy(szDataIn, szDataIn1);
- // ECB kodovanie
- if (method == 0) {
- memset(szDataOut, 0, size);
- aes.Encrypt(szDataIn1, szDataOut, size - 1, CRijndael::ECB);
- }
- if (method == 1) {
- memset(szDataOut, 0, size);
- aes.Encrypt(szDataIn1, szDataOut, size - 1, CRijndael::CBC);
- }
- if (method == 2) {
- memset(szDataOut, 0, size);
- aes.Encrypt(szDataIn1, szDataOut, size - 1, CRijndael::CFB);
- }
- // ulozim do pomocneho pola zakodovany text
- int len = strlen(szDataOut);
- char encodedText[len];
- for (int i = 0; i < len; i++) {
- encodedText[i] = szDataOut[i];
- }
- jbyteArray trackIDArray = env->NewByteArray(strlen(encodedText));
- env->SetByteArrayRegion(trackIDArray, 0, strlen(encodedText), (const jbyte*) encodedText);
- return trackIDArray;
- }
Advertisement
Add Comment
Please, Sign In to add comment