NDK 数据加解密-AES 对称加密

作者: 毛先森 | 来源:发表于2019-08-27 10:13 被阅读0次

    前言

    网络传输过程中对数据进行加解密是非常必要的操作,Java 就可以实现数据加解密操作,但是使用 NDK 来做能提高安全性(密钥放在 so 文件中)和性能.

    加密方式

    在这个 Demo 中,我们使用 AES(对称加密)来处理数据. 对称加密的加解密双方持有完全相同的密钥,也就是说客户端和服务器约定一套"密码",大家传输数据都用此密钥加密,加密后的数据是不可读的,另一方拿到数据后马上用密钥解密数据. 这就好比二战时代的军情电报,大家都用同一套密码本,使用密码本将前线军情转换成别人读不懂的代号,接收方因为有同样的密码本,可以将这些代号逐一翻译成可读的信息.

    我们的应用程序中的支付数据,关键接口数据基本会使用加密传输,避免网络请求被拦截后用户信息暴露给其他人.

    实现过程

    我们使用 AES/CBC/NoPadding 进行数据加解密,加解密操作由 Java 层处理,而密钥被保存在 JNI 层.

    • 首先编写 JNI 层代码,操作很简单,只是 JNI 从 Native 层获取一个字符串到 Java 层
    
    #include "com_bailun_kai_encryptdemo_JniEncrypt.h"
    
    JNIEXPORT jstring JNICALL Java_com_bailun_kai_encryptdemo_JniEncrypt_getAESPassWord
      (JNIEnv *env, jobject){
         //当前 AES 的密钥长度为 16 字节,128 bit
         return env->NewStringUTF("BlTEstHeLLoWORld");
    
      }
    
    • 加载 so 库
    public class JniEncrypt {
    
        public native String getAESPassWord();
    
    
        static {
    
            System.loadLibrary("EncryptLib");
    
        }
    
    
    }
    
    • 加解密过程
    video2gif_20190827_100840.gif

    相关文章

      网友评论

        本文标题:NDK 数据加解密-AES 对称加密

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