一往情深深几许,深山夕照深秋雨
提示:以下是本篇文章正文内容,下面案例可供参考
一、so加密解密的介绍
- 他是和jar包一同放在服务器当中的一个外联库,其中是通过算法进行加密和解密
- 加密的使用方法是现将so文件放入到服务器当中,然后写好接口,打包部署
访问即可生成加密保存数据库 - 解密是将你加密的字符串和长度发送获取即可得到解密
二、框架的so加密
1.pom的依赖导入
<!--so jni依赖包-->
<dependency>
<groupId>net.java.dev.jna</groupId>
<artifactId>jna</artifactId>
<version>4.5.2</version>
</dependency>
2.编写SoUtil 工具类
package com.information.utils;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.util.Base64;
import com.sun.jna.Library;
import com.sun.jna.Native;
import java.nio.charset.StandardCharsets;
import java.util.ArrayList;
import java.util.Arrays;
public class SoUtil {
private interface CLibrary extends Library {
// CLibrary: .so文件的接口, 用于调用.so文件中的方法
int zSVencrypt(int num, byte[] in, int in_len, byte[] out);
int zSVdecrypt(int num, byte[] in, int in_len, byte[] out);
}
private static class SoLibImpl implements CLibrary {
static CLibrary INSTANCE;
// 通过Native.loadLibrary()方法加载.so文件, 并将.so文件中的方法封装到CLibrary接口中
static {
try {
//sv.so文件的路径你是放在服务器的路径
INSTANCE = (CLibrary) Native.synchronizedLibrary(Native.loadLibrary("/www/wwwroot/xinxianquan/libzSV.so", CLibrary.class));
System.out.println("load .so file success");
} catch (Exception e) {
System.out.println("load .so file failed!");
}
}
// 声明.so文件中的方法
@Override
public native int zSVencrypt(int num, byte[] in, int in_len, byte[] out);
@Override
public native int zSVdecrypt(int num, byte[] in, int in_len, byte[] out);
}
//加密
public byte[]