pioneer
2 years ago
commit
9e97116f15
16 changed files with 655 additions and 0 deletions
@ -0,0 +1,6 @@
|
||||
# open-JSD-10072 |
||||
|
||||
JSD-10072 excel解密后导入\ |
||||
免责说明:该源码为第三方爱好者提供,不保证源码和方案的可靠性,也不提供任何形式的源码教学指导和协助!\ |
||||
仅作为开发者学习参考使用!禁止用于任何商业用途!\ |
||||
为保护开发者隐私,开发者信息已隐去!若原开发者希望公开自己的信息,可联系【pioneer】处理。 |
Binary file not shown.
Binary file not shown.
Binary file not shown.
@ -0,0 +1,30 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?> |
||||
<plugin> |
||||
<id>com.fr.plugin.gb.crypt</id> |
||||
<name><![CDATA[导入导出文件加解密_EK]]></name> |
||||
<active>yes</active> |
||||
<version>1.3.1</version> |
||||
<env-version>10.0</env-version> |
||||
<jartime>2021-10-01</jartime> |
||||
<vendor>fr.open</vendor> |
||||
<description><![CDATA[导入导出文件加解密]]></description> |
||||
<change-notes><![CDATA[ |
||||
[2022-04-28]1、FR报表填报预览的导入excel解密;2、FR报表预览的原样导出excel加密。<br/> |
||||
[2022-04-28]JSD-10072插件初始化<br/> |
||||
]]></change-notes> |
||||
<main-package>com.fr.plugin.gb</main-package> |
||||
<prefer-packages> |
||||
<prefer-package>com.fanruan.api</prefer-package> |
||||
<prefer-package>com.sun.jna</prefer-package> |
||||
</prefer-packages> |
||||
<extra-core> |
||||
<LocaleFinder class="com.fr.plugin.gb.LocaleFinder"/> |
||||
</extra-core> |
||||
<extra-report> |
||||
<ExcelExportAppProvider class="com.fr.plugin.gb.provider.SimpleExcelExportApp"/> |
||||
</extra-report> |
||||
<extra-decision> |
||||
<GlobalRequestFilterProvider class="com.fr.plugin.gb.filter.CustomExcelImportDeal"/> |
||||
</extra-decision> |
||||
<function-recorder class="com.fr.plugin.gb.LocaleFinder"/> |
||||
</plugin> |
@ -0,0 +1,36 @@
|
||||
/* |
||||
* Copyright (C), 2018-2020 |
||||
* Project: starter |
||||
* FileName: LocaleFinder |
||||
* Author: xx |
||||
* Date: 2020/8/31 22:19 |
||||
*/ |
||||
package com.fr.plugin.gb; |
||||
|
||||
import com.fr.intelli.record.Focus; |
||||
import com.fr.intelli.record.Original; |
||||
import com.fr.record.analyzer.EnableMetrics; |
||||
import com.fr.stable.fun.impl.AbstractLocaleFinder; |
||||
|
||||
/** |
||||
* <Function Description><br> |
||||
* <LocaleFinder> |
||||
* |
||||
* @author xx |
||||
* @since 1.0.0 |
||||
*/ |
||||
@EnableMetrics |
||||
public class LocaleFinder extends AbstractLocaleFinder { |
||||
public static final String PLUGIN_ID = "com.fr.plugin.gb.crypt"; |
||||
|
||||
@Override |
||||
@Focus(id = PLUGIN_ID, text = "Plugin-gb", source = Original.PLUGIN) |
||||
public String find() { |
||||
return "com/fr/plugin/gb/locale/lang"; |
||||
} |
||||
|
||||
@Override |
||||
public int currentAPILevel() { |
||||
return CURRENT_LEVEL; |
||||
} |
||||
} |
@ -0,0 +1,57 @@
|
||||
/** |
||||
* Copyright (C), 2015-2020 |
||||
* FileName: ExcelPlusExporter |
||||
* Author: xx |
||||
* Date: 2020/3/17 11:50 |
||||
* Description: ExcelPlusExporter |
||||
* History: |
||||
* <author> <time> <version> <desc> |
||||
*/ |
||||
package com.fr.plugin.gb.export; |
||||
|
||||
import com.fanruan.api.util.StringKit; |
||||
import com.fr.io.exporter.ExcelExporter; |
||||
import com.fr.main.workbook.ResultWorkBook; |
||||
import com.fr.page.PageSetCreator; |
||||
import com.fr.plugin.gb.utils.InteKeyHandler; |
||||
import com.fr.web.core.ReportRepositoryDeal; |
||||
|
||||
import java.io.File; |
||||
import java.io.FileOutputStream; |
||||
import java.io.OutputStream; |
||||
import java.util.List; |
||||
|
||||
/** |
||||
* 〈Function Description〉<br> |
||||
* 〈ExcelPlusExporter〉 |
||||
* |
||||
* @author xx |
||||
* @since 1.0.0 |
||||
*/ |
||||
public class ExcelPlusExporter extends ExcelExporter { |
||||
|
||||
public ExcelPlusExporter() { |
||||
} |
||||
|
||||
public ExcelPlusExporter(List list) { |
||||
super(list); |
||||
} |
||||
|
||||
@Override |
||||
public void export(OutputStream outputStream, ResultWorkBook resultWorkBook, PageSetCreator pageSetCreator, ReportRepositoryDeal reportRepositoryDeal, int[] ints) throws Exception { |
||||
File file = File.createTempFile("InteKey", StringKit.EMPTY); |
||||
FileOutputStream fileOutputStream = new FileOutputStream(file); |
||||
super.export(fileOutputStream, resultWorkBook, pageSetCreator, reportRepositoryDeal, ints); |
||||
fileOutputStream.close(); |
||||
InteKeyHandler.getInstance().encryptFile(outputStream, file); |
||||
} |
||||
|
||||
@Override |
||||
public void export(OutputStream outputStream, ResultWorkBook resultWorkBook) throws Exception { |
||||
File file = File.createTempFile("InteKey", StringKit.EMPTY); |
||||
FileOutputStream fileOutputStream = new FileOutputStream(file); |
||||
super.export(fileOutputStream, resultWorkBook); |
||||
fileOutputStream.close(); |
||||
InteKeyHandler.getInstance().encryptFile(outputStream, file); |
||||
} |
||||
} |
@ -0,0 +1,244 @@
|
||||
/* |
||||
* Copyright (C), 2018-2022 |
||||
* Project: starter |
||||
* FileName: BodyRequestWrapper |
||||
* Author: xx |
||||
* Date: 2022/5/27 11:39 |
||||
*/ |
||||
package com.fr.plugin.gb.filter; |
||||
|
||||
import com.fanruan.api.log.LogKit; |
||||
import com.fr.base.ConfigManager; |
||||
import com.fr.base.FRContext; |
||||
import com.fr.data.NetworkHelper; |
||||
import com.fr.general.IOUtils; |
||||
import com.fr.general.http.HttpClient; |
||||
import com.fr.general.web.ParameterConsts; |
||||
import com.fr.plugin.gb.utils.InteKeyHandler; |
||||
import com.fr.stable.StringUtils; |
||||
import com.fr.web.utils.WebUtils; |
||||
|
||||
import javax.servlet.ReadListener; |
||||
import javax.servlet.ServletInputStream; |
||||
import javax.servlet.http.HttpServletRequest; |
||||
import javax.servlet.http.HttpServletRequestWrapper; |
||||
import java.io.*; |
||||
|
||||
public class BodyRequestWrapper extends HttpServletRequestWrapper { |
||||
private static final int SPEC_HEADER_CHAR = 13; |
||||
|
||||
private byte[] body; |
||||
private File file; |
||||
private HttpServletRequest m_request; |
||||
protected byte m_binArray[]; |
||||
private int m_totalBytes; |
||||
private int m_currentIndex; |
||||
private int m_startData; |
||||
private int m_endData; |
||||
private String fileName; |
||||
private String m_boundary = StringUtils.EMPTY; |
||||
|
||||
public BodyRequestWrapper(HttpServletRequest request) { |
||||
super(request); |
||||
m_request = request; |
||||
try { |
||||
init(); |
||||
if (m_startData >= m_endData) { |
||||
body = m_binArray; |
||||
} else { |
||||
file = createNewFile(); |
||||
byte[] bytes = IOUtils.inputStream2Bytes(new FileInputStream(file)); |
||||
int fileLen = bytes.length; |
||||
int len = m_startData + (m_binArray.length - m_endData - 1) + bytes.length; |
||||
body = new byte[len]; |
||||
for (int i = 0, j = m_endData + 1; i < len; i++) { |
||||
if (i < m_startData) { |
||||
body[i] = m_binArray[i]; |
||||
} else if (i >= m_startData && (i - m_startData <= fileLen - 1)) { |
||||
body[i] = bytes[i - m_startData]; |
||||
} else { |
||||
body[i] = m_binArray[j]; |
||||
j++; |
||||
} |
||||
} |
||||
} |
||||
} catch (Exception e) { |
||||
LogKit.error(e.getMessage(), e); |
||||
} |
||||
} |
||||
|
||||
@Override |
||||
public ServletInputStream getInputStream() throws IOException { |
||||
try { |
||||
final ByteArrayInputStream localByteArrayInputStream = new ByteArrayInputStream(this.body); |
||||
return new ServletInputStream() { |
||||
|
||||
@Override |
||||
public int read() throws IOException { |
||||
return localByteArrayInputStream.read(); |
||||
} |
||||
|
||||
@Override |
||||
public boolean isFinished() { |
||||
return false; |
||||
} |
||||
|
||||
@Override |
||||
public boolean isReady() { |
||||
return false; |
||||
} |
||||
|
||||
@Override |
||||
public void setReadListener(ReadListener readListener) { |
||||
|
||||
} |
||||
}; |
||||
|
||||
} catch (Exception e) { |
||||
e.printStackTrace(); |
||||
} |
||||
return super.getInputStream(); |
||||
} |
||||
|
||||
@Override |
||||
public BufferedReader getReader() throws IOException { |
||||
return new BufferedReader(new InputStreamReader(getInputStream())); |
||||
} |
||||
|
||||
public File createNewFile() { |
||||
byte[] var1 = new byte[this.m_endData - this.m_startData + 1]; |
||||
System.arraycopy(this.m_binArray, this.m_startData, var1, 0, var1.length); |
||||
return InteKeyHandler.getInstance().decrypt(new ByteArrayInputStream(var1)); |
||||
} |
||||
|
||||
/** |
||||
* 初始化方法, |
||||
* 里面的方法都是从smartUpload里面copy出来的 |
||||
* 主要是为了找出输入流中 真正的关于文件的部分,吧这个部分替换掉 |
||||
*/ |
||||
public void init() { |
||||
int i = 0; |
||||
boolean flag1 = false; |
||||
long length = 0; |
||||
m_totalBytes = m_request.getContentLength(); |
||||
if (m_totalBytes < 0) { |
||||
return; |
||||
} |
||||
if (WebUtils.getHTTPRequestParameter(m_request, ParameterConsts.REDIRECT_FROM) != null) { |
||||
//从HttpClient里再捞一把, 因为有可能是集群转发作为正文传过来的.
|
||||
InputStream in = HttpClient.getInputStream(m_request); |
||||
m_binArray = IOUtils.inputStream2Bytes(in); |
||||
} else { |
||||
InputStream in = NetworkHelper.getRequestInputStream(m_request); |
||||
m_binArray = IOUtils.inputStream2Bytes(in); |
||||
} |
||||
for (; !flag1 && m_currentIndex < m_totalBytes; m_currentIndex++) { |
||||
if (m_binArray[m_currentIndex] == SPEC_HEADER_CHAR) { |
||||
flag1 = true; |
||||
} else { |
||||
m_boundary = m_boundary + (char) m_binArray[m_currentIndex]; |
||||
} |
||||
} |
||||
if (m_currentIndex == 1) { |
||||
return; |
||||
} |
||||
m_currentIndex++; |
||||
String header = getDataHeader(); |
||||
String pathName = getDataFieldValue(header, "filename"); |
||||
fileName = getFileName(pathName); |
||||
m_currentIndex = m_currentIndex + 2; |
||||
getDataSection(); |
||||
} |
||||
|
||||
@Override |
||||
protected void finalize() throws Throwable { |
||||
super.finalize(); |
||||
// if (file != null) {
|
||||
// file.delete();
|
||||
// }
|
||||
} |
||||
|
||||
private String getDataHeader() { |
||||
// boolean flag = false;
|
||||
int i = m_currentIndex; |
||||
int j = 0; |
||||
for (boolean flag1 = false; !flag1; ) { |
||||
if (m_binArray[m_currentIndex] == SPEC_HEADER_CHAR && m_binArray[m_currentIndex + 2] == SPEC_HEADER_CHAR) { |
||||
flag1 = true; |
||||
j = m_currentIndex - 1; |
||||
m_currentIndex = m_currentIndex + 2; |
||||
} else { |
||||
m_currentIndex++; |
||||
} |
||||
} |
||||
|
||||
String header = StringUtils.EMPTY; |
||||
try { |
||||
// 字符编码要与服务器端设置的保持一致
|
||||
header = new String(m_binArray, i, (j - i) + 1, ConfigManager.getProviderInstance().getServerCharset()); |
||||
} catch (UnsupportedEncodingException e) { |
||||
FRContext.getLogger().error(e.getMessage()); |
||||
} |
||||
return header; |
||||
} |
||||
|
||||
private void getDataSection() { |
||||
// boolean flag = false;
|
||||
// String s = "";
|
||||
// String s = new String();
|
||||
int i = m_currentIndex; |
||||
int j = 0; |
||||
int k = m_boundary.length(); |
||||
m_startData = m_currentIndex; |
||||
m_endData = 0; |
||||
while (i < m_totalBytes) { |
||||
if (m_binArray[i] == (byte) m_boundary.charAt(j)) { |
||||
if (j == k - 1) { |
||||
m_endData = ((i - k) + 1) - 3; |
||||
break; |
||||
} |
||||
i++; |
||||
j++; |
||||
} else { |
||||
i++; |
||||
j = 0; |
||||
} |
||||
} |
||||
m_currentIndex = m_endData + k + 3; |
||||
} |
||||
|
||||
private String getDataFieldValue(String s, String s1) { |
||||
String s2 = ""; // = new String();
|
||||
String s3 = ""; // = new String();
|
||||
int i = 0; |
||||
// boolean flag = false;
|
||||
// boolean flag1 = false;
|
||||
// boolean flag2 = false;
|
||||
s2 = s1 + "=" + '"'; |
||||
i = s.indexOf(s2); |
||||
if (i > 0) { |
||||
int j = i + s2.length(); |
||||
int k = j; |
||||
s2 = "\""; |
||||
int l = s.indexOf(s2, j); |
||||
if (k > 0 && l > 0) { |
||||
s3 = s.substring(k, l); |
||||
} |
||||
} |
||||
return s3; |
||||
} |
||||
|
||||
private String getFileName(String fileName) { |
||||
int i = 0; |
||||
i = fileName.lastIndexOf('/'); |
||||
if (i != -1) { |
||||
return fileName.substring(i + 1, fileName.length()); |
||||
} |
||||
i = fileName.lastIndexOf('\\'); |
||||
if (i != -1) { |
||||
return fileName.substring(i + 1, fileName.length()); |
||||
} else { |
||||
return fileName; |
||||
} |
||||
} |
||||
} |
@ -0,0 +1,45 @@
|
||||
/* |
||||
* Copyright (C), 2018-2022 |
||||
* Project: starter |
||||
* FileName: CustomExcelImportDeal |
||||
* Author: xx |
||||
* Date: 2022/5/27 11:39 |
||||
*/ |
||||
package com.fr.plugin.gb.filter; |
||||
|
||||
import com.fanruan.api.log.LogKit; |
||||
import com.fanruan.api.util.StringKit; |
||||
import com.fr.decision.fun.impl.AbstractGlobalRequestFilterProvider; |
||||
import com.fr.web.utils.WebUtils; |
||||
|
||||
import javax.servlet.FilterChain; |
||||
import javax.servlet.http.HttpServletRequest; |
||||
import javax.servlet.http.HttpServletResponse; |
||||
|
||||
public class CustomExcelImportDeal extends AbstractGlobalRequestFilterProvider { |
||||
|
||||
@Override |
||||
public String filterName() { |
||||
return "importExcel"; |
||||
} |
||||
|
||||
@Override |
||||
public String[] urlPatterns() { |
||||
return new String[]{"/decision/view/report"}; |
||||
} |
||||
|
||||
@Override |
||||
public void doFilter(HttpServletRequest req, HttpServletResponse res, FilterChain filterChain) { |
||||
try { |
||||
String op = WebUtils.getHTTPRequestParameter(req, "op"); |
||||
String cmd = WebUtils.getHTTPRequestParameter(req, "cmd"); |
||||
if (StringKit.equals(op, "fr_write") && StringKit.equals(cmd, "imp_w_excel_data")) { |
||||
filterChain.doFilter(new BodyRequestWrapper(req), res); |
||||
} else { |
||||
filterChain.doFilter(req, res); |
||||
} |
||||
} catch (Exception e) { |
||||
LogKit.error(e.getMessage(), e); |
||||
} |
||||
} |
||||
} |
@ -0,0 +1,45 @@
|
||||
/* |
||||
* Copyright (C), 2018-2021 |
||||
* Project: starter |
||||
* FileName: SimpleExcelExportApp |
||||
* Author: xx |
||||
* Date: 2021/12/6 8:27 |
||||
*/ |
||||
package com.fr.plugin.gb.provider; |
||||
|
||||
import com.fr.general.ReportDeclareRecordType; |
||||
import com.fr.io.collection.ExportCollection; |
||||
import com.fr.io.exporter.AppExporter; |
||||
import com.fr.io.exporter.ExcelExportType; |
||||
import com.fr.plugin.gb.export.ExcelPlusExporter; |
||||
import com.fr.report.core.ReportUtils; |
||||
import com.fr.report.fun.impl.AbstractExcelExportAppProvider; |
||||
import com.fr.stable.ExportConstants; |
||||
import com.fr.stable.fun.Authorize; |
||||
import com.fr.stable.web.SessionProvider; |
||||
|
||||
import static com.fr.plugin.gb.LocaleFinder.PLUGIN_ID; |
||||
|
||||
/** |
||||
* <Function Description><br> |
||||
* <原样导出SimpleExcelExportApp> |
||||
* |
||||
* @author xx |
||||
* @since 1.0.0 |
||||
*/ |
||||
@Authorize(callSignKey = PLUGIN_ID) |
||||
public class SimpleExcelExportApp extends AbstractExcelExportAppProvider { |
||||
|
||||
@Override |
||||
public String exportType() { |
||||
return ExportConstants.TYPE_SIMPLE; |
||||
} |
||||
|
||||
@Override |
||||
public AppExporter<Boolean> newAppExporter(ExportCollection collection, ExcelExportType exportType, SessionProvider sessionIDInfor) { |
||||
AppExporter<Boolean> exporter = new ExcelPlusExporter(ReportUtils.getPaperSettingListFromWorkBook(sessionIDInfor.getOriginalObject())); |
||||
collection.setExporter(exporter); |
||||
collection.setRecordType(ReportDeclareRecordType.EXPORT_TYPE_EXCEL_ORIGINAL); |
||||
return exporter; |
||||
} |
||||
} |
@ -0,0 +1,29 @@
|
||||
/* |
||||
* Copyright (C), 2018-2022 |
||||
* Project: starter |
||||
* FileName: DLLUtil |
||||
* Author: xx |
||||
* Date: 2022/5/10 16:39 |
||||
*/ |
||||
package com.fr.plugin.gb.utils; |
||||
|
||||
import com.sun.jna.Library; |
||||
import com.sun.jna.Native; |
||||
|
||||
/** |
||||
* <Function Description><br> |
||||
* <DLLUtil> |
||||
* |
||||
* @author xx |
||||
* @since 1.0.0 |
||||
*/ |
||||
public interface DLLUtil extends Library { |
||||
// DLLUtil dllUtil32 = (DLLUtil) Native.load("Encryptor6_32.dll", DLLUtil.class);
|
||||
DLLUtil dllUtil64 = (DLLUtil) Native.loadLibrary("Encryptor6_64.dll", DLLUtil.class); |
||||
|
||||
public int Da(String strFilePath, int bReplace, String dstFilePath); |
||||
|
||||
public int Ia(String pFilePath); |
||||
|
||||
public int Ea(String strFilePath); |
||||
} |
@ -0,0 +1,145 @@
|
||||
/* |
||||
* Copyright (C), 2018-2022 |
||||
* Project: starter |
||||
* FileName: InteKeyHandler |
||||
* Author: xx |
||||
* Date: 2022/3/7 11:19 |
||||
*/ |
||||
package com.fr.plugin.gb.utils; |
||||
|
||||
import com.fanruan.api.i18n.I18nKit; |
||||
import com.fanruan.api.log.LogKit; |
||||
import com.fanruan.api.util.IOKit; |
||||
import com.fanruan.api.util.StringKit; |
||||
import com.fr.general.ComparatorUtils; |
||||
import com.fr.plugin.context.PluginContexts; |
||||
|
||||
import java.io.*; |
||||
|
||||
/** |
||||
* <Function Description><br> |
||||
* <InteKeyHandler> |
||||
* |
||||
* @author xx |
||||
* @since 1.0.0 |
||||
*/ |
||||
public class InteKeyHandler { |
||||
private static volatile InteKeyHandler handler = null; |
||||
|
||||
public InteKeyHandler() { |
||||
} |
||||
|
||||
public static InteKeyHandler getInstance() { |
||||
if (handler == null) { |
||||
handler = new InteKeyHandler(); |
||||
} |
||||
return handler; |
||||
} |
||||
|
||||
/** |
||||
* 加密文件操作 |
||||
* |
||||
* @param out |
||||
* @param file |
||||
*/ |
||||
public void encryptFile(OutputStream out, File file) { |
||||
if (PluginContexts.currentContext() == null || !PluginContexts.currentContext().isAvailable()) { |
||||
LogKit.error(I18nKit.getLocText("Plugin-gb_Licence_Expired")); |
||||
return; |
||||
} |
||||
LogKit.info("gb-InteKeyHandler-encryptFile-filePath:{}", file.getAbsolutePath()); |
||||
if (!encrypt(file.getAbsolutePath())) { |
||||
return; |
||||
} |
||||
try { |
||||
FileInputStream in = new FileInputStream(file); |
||||
byte[] b = new byte[1024]; |
||||
int len; |
||||
while ((len = in.read(b)) != -1) { |
||||
out.write(b, 0, len); |
||||
} |
||||
out.close(); |
||||
in.close(); |
||||
} catch (IOException e) { |
||||
LogKit.error(e.getMessage(), e); |
||||
} |
||||
} |
||||
|
||||
/** |
||||
* 输入流解密操作 |
||||
* |
||||
* @param inputStream |
||||
* @return |
||||
*/ |
||||
public File decrypt(InputStream inputStream) { |
||||
if (PluginContexts.currentContext() == null || !PluginContexts.currentContext().isAvailable()) { |
||||
LogKit.error(I18nKit.getLocText("Plugin-gb_Licence_Expired")); |
||||
return null; |
||||
} |
||||
byte[] bytes = IOKit.inputStream2Bytes(inputStream); |
||||
FileOutputStream fos = null; |
||||
File tempFile = null; |
||||
try { |
||||
tempFile = File.createTempFile("InteKey", StringKit.EMPTY); |
||||
fos = new FileOutputStream(tempFile); |
||||
fos.write(bytes); |
||||
//流关闭,指针null,目的是为了解密的时候这个程序这边不占用,要不然解密的时候会报错,文件被其他文件占用
|
||||
fos.flush(); |
||||
fos.close(); |
||||
fos = null; |
||||
String filePath = tempFile.getAbsolutePath(); |
||||
tempFile = null; |
||||
LogKit.info("gb-InteKeyHandler-decrypt-filePath:{}", filePath); |
||||
if (!isEncryptFile(filePath)) { |
||||
LogKit.info("gb-InteKeyHandler-decrypt-Not Encrypt File"); |
||||
return new File(filePath); |
||||
} |
||||
if (!decrypt(filePath)) { |
||||
LogKit.info("gb-InteKeyHandler-decrypt-File decrypt failed"); |
||||
return new File(filePath); |
||||
} |
||||
LogKit.info("gb-InteKeyHandler-decrypt-FileInputStream"); |
||||
return new File(filePath); |
||||
} catch (Exception e) { |
||||
LogKit.error(e.getMessage(), e); |
||||
return null; |
||||
} |
||||
} |
||||
|
||||
public boolean encrypt(String path) { |
||||
System.setProperty("jna.encoding", "GBK"); |
||||
int resultCode; |
||||
resultCode = DLLUtil.dllUtil64.Ea(path); |
||||
LogKit.info("gb-InteKeyHandler-encrypt-resultCode:{}", resultCode); |
||||
return ComparatorUtils.equals(resultCode, 0); |
||||
// return true;
|
||||
} |
||||
|
||||
public boolean decrypt(String path) { |
||||
int resultCode = -1; |
||||
int index = 0; |
||||
while (true) { |
||||
if (!ComparatorUtils.equals(DLLUtil.dllUtil64.Ia(path), 0)) { |
||||
resultCode = DLLUtil.dllUtil64.Da(path, 1, ""); |
||||
} else { |
||||
break; |
||||
} |
||||
index++; |
||||
if (index > 20) { |
||||
break; |
||||
} |
||||
} |
||||
LogKit.info("gb-InteKeyHandler-decrypt-resultCode:{}", resultCode); |
||||
return ComparatorUtils.equals(resultCode, 0); |
||||
// return true;
|
||||
} |
||||
|
||||
public boolean isEncryptFile(String path) { |
||||
System.setProperty("jna.encoding", "GBK"); |
||||
int resultCode; |
||||
resultCode = DLLUtil.dllUtil64.Ia(path); |
||||
LogKit.info("gb-InteKeyHandler-isEncryptFile-resultCode:{}", resultCode); |
||||
return ComparatorUtils.equals(resultCode, 1) || ComparatorUtils.equals(resultCode, 2); |
||||
// return true;
|
||||
} |
||||
} |
@ -0,0 +1,9 @@
|
||||
Plugin-gb=File Crypt Plugin |
||||
Plugin-gb_Group=File Crypt Plugin |
||||
Plugin-gb_Config_KeyID=KeyID |
||||
Plugin-gb_Config_KeyID_Description=KeyID |
||||
Plugin-gb_Config_KeyLevel=KeyLevel |
||||
Plugin-gb_Config_KeyLevel_Description=KeyLevel |
||||
Plugin-gb_Config_UserDir=UserDir |
||||
Plugin-gb_Config_UserDir_Description=UserDir |
||||
Plugin-gb_Licence_Expired=File Crypt Plugin Licence Expired |
@ -0,0 +1,9 @@
|
||||
Plugin-gb=\u5BFC\u5165\u5BFC\u51FA\u6587\u4EF6\u52A0\u89E3\u5BC6 |
||||
Plugin-gb_Group=\u5BFC\u5165\u5BFC\u51FA\u6587\u4EF6\u52A0\u89E3\u5BC6\u63D2\u4EF6 |
||||
Plugin-gb_Config_KeyID=\u79D8\u94A5 |
||||
Plugin-gb_Config_KeyID_Description=\u79D8\u94A5 |
||||
Plugin-gb_Config_KeyLevel=\u5BC6\u7EA7 |
||||
Plugin-gb_Config_KeyLevel_Description=\u5BC6\u7EA7 |
||||
Plugin-gb_Config_UserDir=\u63A5\u53E3\u76EE\u5F55 |
||||
Plugin-gb_Config_UserDir_Description=\u63A5\u53E3\u76EE\u5F55 |
||||
Plugin-gb_Licence_Expired=\u5BFC\u5165\u5BFC\u51FA\u6587\u4EF6\u52A0\u89E3\u5BC6\u63D2\u4EF6\u8BB8\u53EF\u8FC7\u671F |
Binary file not shown.
Binary file not shown.
Loading…
Reference in new issue