1、创建布局:

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

31

32

33

34

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

31

32

33

34

2、创建页面

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

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

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

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51/** * @描述 TODO * @项目名称 App_imooc * @包名 com.android.imooc.jni * @类名 JniActivity *@author chenlin *@date 2013年5月24日 上午6:58:39 *@version 1.0 */

public class JniActivity extends Activity {

private EditText mEtPwd;

static{

//加载类库

System.loadLibrary("hello");

}

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_jni);

mEtPwd = (EditText) findViewById(R.id.et_pwd);

Log.i("tag", helloFromC());

}

public void encode(View view){

String text = mEtPwd.getText().toString();

if (!TextUtils.isEmpty(text)) {

String pwd = encodePwd(text, text.length());

System.out.println("加密密码=" + pwd);

mEtPwd.setText(pwd);

}

}

public void decode(View view){

String text = mEtPwd.getText().toString();

if (!TextUtils.isEmpty(text)) {

System.out.println("解密密码=" + decodePwd(text, text.length()));

}

}

public native String helloFromC();

public native int sum(int x, int y);

public native String encodePwd(String pass, int len);

public native String decodePwd(String pass, int len);

}

3、进入项目的src目录下  按住shift+右键,打开cmd窗口

在窗口里输入

1

1javah com.android.imooc.jni.JniActivity

此时会生成文件com_android_imooc_jni_JniActivity  打开  拷贝里面的两个方法到hello.c文件里

1

2

3

4

5

6

1

2

3

4

5

6JNIEXPORT jstring JNICALL Java_com_android_imooc_jni_JniActivity_encodePwd

(JNIEnv *, jobject, jstring, jint);

JNIEXPORT jstring JNICALL Java_com_android_imooc_jni_JniActivity_decodePwd

(JNIEnv *, jobject, jstring, jint);

4、改写hello.c里的这两个方法

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

31

32

33

34

35

36

37

38

39

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

31

32

33

34

35

36

37

38

39//把java的字符串转换成c的字符串

char* Jstring2CStr(JNIEnv* env, jstring jstr) {

char* rtn = NULL;

jclass clsstring = (*env)->FindClass(env, "java/lang/String");

jstring strencode = (*env)->NewStringUTF(env, "GB2312");

jmethodID mid = (*env)->GetMethodID(env, clsstring, "getBytes",

"(Ljava/lang/String;)[B");

jbyteArray barr = (jbyteArray) (*env)->CallObjectMethod(env, jstr, mid,

strencode); // String .getByte("GB2312");

jsize alen = (*env)->GetArrayLength(env, barr);

jbyte* ba = (*env)->GetByteArrayElements(env, barr, JNI_FALSE);

if (alen > 0) {

rtn = (char*) malloc(alen + 1); //"\0"

memcpy(rtn, ba, alen);

rtn[alen] = 0;

}

(*env)->ReleaseByteArrayElements(env, barr, ba, 0); //

return rtn;

}

//加密

JNIEXPORT jstring JNICALL Java_com_android_imooc_jni_JniActivity_encodePwd(

JNIEnv * env, jobject obj, jstring jstr, jint len) {

char * cstr = Jstring2CStr(env, jstr);

for (int i = 0; i < len; i++) {

*(cstr + i) += 1;

}

return (*env)->NewStringUTF(env, cstr);

}

//解密

JNIEXPORT jstring JNICALL Java_com_android_imooc_jni_JniActivity_decodePwd(

JNIEnv * env, jobject obj, jstring jstr, jint len) {

char * cstr = Jstring2CStr(env, jstr);

for (int i = 0; i < len; i++) {

*(cstr + i) -= 1;

}

return (*env)->NewStringUTF(env, cstr);

}

5、运行,如图

6、输入字母”abc”  得到结果  06-06 14:09:55.561: I/System.out(3956): 加密密码=cde  06-06 14:09:58.437: I/System.out(3956): 解密密码=bcd

android中jni数据加密,Android jni字符串如何加密相关推荐

  1. Java中beimage_GitHub - beconf/ImageBlurring: Android 中通过 Java 与 JNI 分别进行图片模糊;并且进行比较其运算速度。...

    ImageBlurring Android 中通过 Java 与 JNI 分别进行图片模糊:并且进行比较其运算速度. 相关文章 备注消息 Screenshots RenderScript Fast B ...

  2. Android中APK直接通过JNI访问驱动

    点击打开链接 1.新建文件LED-JNI.c,内容如下: [cpp] view plaincopy #include <jni.h>  /* /usr/lib/jvm/java-1.7.0 ...

  3. android中内存泄露,Android中的内存泄露

    编辑推荐: 本文来自于csdn,本文主要从java的内存模型讲起,最终举出几个内存泄露的例子和解决方案. java运行时内存模型 具体信息:http://gityuan.com/2016/01/09/ ...

  4. android ffmpeg 优点_在Android中使用FFmpeg(android studio环境)

    1.首先我们需要一个已经编译好的libffmpeg.so文件.(怎么编译是个大坑,可以参考windows环境下编译android中使用的FFmpeg,也可以用网上下载的现成的,本文相关的github项 ...

  5. android中的单例模式,Android中的单例模式

    定义: 单例模式:确保某一个类只有一个实例,而且自行实例化并向整个系统提供这个实例. 使用场景: 确保某一个类有且只有一个对象的场景,避免产生多个对象消耗过多的资源,或者某种类型的对象只应该有且只有一 ...

  6. android中textcolor属性,android – EditText和TextView textColorPrimary不遵循API lt;21的主题颜色...

    在设计工具栏视图以使其适用于API 21及以下版本时存在一些问题,但我认为我有这个styles.xml @color/colorPrimary @color/colorPrimaryDark @col ...

  7. android中px单位,android中像素单位dp、px、pt、sp的比较

    dp(dip): device independent pixels(设备独立像素). 不同设备有不同的显示效果,这个和设备硬件有关,一般我们为了支持WVGA.HVGA和QVGA 推荐使用这个,不依赖 ...

  8. android中的 listview,Android中ListView的初步认识(一)

    ListView是安卓开发中常用的组件之一,它的作用是在一个垂直的列表中展现出所需的项目.接下来,我们看一下ListView的实现方法: 第一种 是常见的在XML中定义然后在activity中使用fi ...

  9. android中viewpager+fragment,Android开发之ViewPager+Fragment

    使用步骤 1.Activity的布局文件 android:id="@+id/viewpager" android:layout_width="wrap_content&q ...

  10. Matrix: android 中的Matrix (android.graphics.Matrix) (转)

    本篇博客主要讲解一下如何处理对一个Bitmap对象进行处理,包括:缩放.旋转.位移.倾斜等.在最后将以一个简单的Demo来演示图片特效的变换. 1. Matrix概述 对于一个图片变换的处理,需要Ma ...

最新文章

  1. 【BZOJ1801】【DTOJ2004】 [Ahoi2009]chess 中国象棋 【DP】
  2. React开发(213):React在 DevTools 中显示自定义名称
  3. 安装sql时挂起的解决方法
  4. 计算机各个部件配合完成加减乘除(计组学习二)
  5. iOS CoreData版本升级和数据库迁移
  6. CenterOS的安装配置(配图解)
  7. Android Junit测试
  8. 【Python成长之路】共享平台
  9. Tomcat 调优之从 Linux 内核源码层面看 Tcp backlog
  10. 惠普计算机安转不上xp,雨林木风xp系统上安装不上惠普打印机驱动的解决办法...
  11. 【CMake】CMakeList编写整理
  12. excel单元格内容拆分_Excel分列解决不了的问题,VBA轻松搞定之拆分单元格
  13. Android中文件的读写---assets和raw下的资源文件
  14. linux下并行运行脚本与让程序可靠运行
  15. 分布式专题-高性能的Web容器之Nginx02-Nginx的应用实战
  16. caffe层解读系列——Data以及ImageData层用法
  17. 手把手教你怎么免费为微信公众号接入智能客服
  18. UEFI(EFI) 的启动菜单与NVRAM
  19. baocms伪静态_PHP源码:BAOCMS v5.0白金版 本地O2O生活电商门户系统+微信+同步wap手机版宝...
  20. 蓝桥杯——基础练习——逗志芃的暴走

热门文章

  1. sql查询慢原因及优化
  2. JSdom操作内容,样式,属性
  3. .NET程序反汇编JustDecompile 开源
  4. 人和人之间不要靠的太近
  5. 前端工程精粹(二):静态资源管理与模板框架
  6. Wine——在Linux上运行Windows软件
  7. leetcode problem 41 -- First Missing Positive
  8. [ios] 申请账号,发布应用
  9. SharePoint Server 2010 LDAP Form 验证最容易出错的几点
  10. 拓端tecdat|【视频】R语言生存分析原理与晚期肺癌患者分析案例|数据分享