美文网首页
JNI 3Des加解密

JNI 3Des加解密

作者: ccDown | 来源:发表于2019-02-25 19:04 被阅读0次

写了一个JNI的3Des加解密方法,github Demo:https://github.com/soulListener/JNIPratice


注意的几点:

1.通过AndroidStudio的AVDManager下载Cmake、LLDB、NDK
2.新建项目添加C++选项
3.开始编码
4.编译项目之后在app->intermediates->cmake中找到编译好的so库文件

1.查看方法签名 javap -s 类的路径,如查看SecretKeySpec的签名:

javap -s javax/crypto/spec/SecretKeySpec
签名

比如想要操控java中的javax.crypto.spec.SecretKeySpec类,需要先找到该类,找到它的构造方法,然后创建这个类Des的对象

jclass SecretKeySpec = env->FindClass("javax/crypto/spec/SecretKeySpec");
jmethodID SecretKeySpecId = env->GetMethodID(SecretKeySpec, "<init>", "([BLjava/lang/String;)V");
jstring algorithm = env->NewStringUTF("DESede");
jobject spcretKeySpec = env->NewObject(SecretKeySpec, SecretKeySpecId, en_key, algorithm);

上述代码实际效果相当于java中的

SecretKeySpec secretKeySpec = new SecretKeySpec(en_key,"DESede");

类比反射是一样的操作过程。

最后在JNI层不使用的时候一定要释放该对象

env->DeleteLocalRef(spcretKeySpec);
  1. Log日志打印

头文件

#include<android/log.h>
#ifndef LOG_TAG
#define LOG_TAG "JniUtils的Log"
#define LOGD(...) __android_log_print(ANDROID_LOG_DEBUG,LOG_TAG ,__VA_ARGS__) // 定义LOGD类型
#define LOGI(...) __android_log_print(ANDROID_LOG_INFO,LOG_TAG ,__VA_ARGS__) // 定义LOGI类型
#define LOGW(...) __android_log_print(ANDROID_LOG_WARN,LOG_TAG ,__VA_ARGS__) // 定义LOGW类型
#define LOGE(...) __android_log_print(ANDROID_LOG_ERROR,LOG_TAG ,__VA_ARGS__) // 定义LOGE类型
#define LOGF(...) __android_log_print(ANDROID_LOG_FATAL,LOG_TAG ,__VA_ARGS__) // 定义LOGF类型
#endif

代码中

LOGE("哈哈哈");

3.String 一定要转换为 newStringUTF();
4.调用java层次的方法感觉还是跟java的反射是一个类型的东西
5.将JNI抛异常到java层
6.释放内存(神TM费劲)

相关文章

  • JNI 3Des加解密

    写了一个JNI的3Des加解密方法,github Demo:https://github.com/soulList...

  • Android Des/3DES加解密

    1、3DES加解密 DES加密分为 单DES和 3DES加密 单DES加密是8个字节长度加密 3DES加密分为:双...

  • 【uniapp】Vue.js CryptoJs 中的 3des

    最近改写 uniapp 时候用到了 3des 加密解密,网上找了好多资料好多写的都是 des 加解密,3des和d...

  • iOS签名机制

    安全方案 对称密码:DES,3DES,AES 加解密用同一个密钥 加解密速度快 无法解决密钥配送问题 非对称加密:...

  • iOS加密之DES

    心急的童鞋直接看这里EncryptDemoDES,3DES的ECB、CBC模式加解密方法All in hereDE...

  • 3DES加解密

    .h .m

  • macos上使用jni

    最近工作中在java工程中通过jni调用c程序编译的库进行加解密,总结一下jni的用法环境:macos 10.12...

  • ios 加密

    1、常见加密算法 : 对称加密:AES、DES、3DES、RC4 优点:加解密速度快 没有长度限制 缺点:密钥容易...

  • 3DES加解密-iOS

    最近公司需要对url明文加密,经过讨论后使用了3DES加密 1.首先需要导入GTMBase64开源框架库 2.KC...

  • Android NDK入门 —— JNI加解密之一

    前言 我会在小专栏和简书一起分享。最近在忙其他事情,今天想起JNI做加解密不错,于是我调查了一下AES使用JNI实...

网友评论

      本文标题:JNI 3Des加解密

      本文链接:https://www.haomeiwen.com/subject/jlrcjqtx.html