CN105554038A - 一种在线系统和离线系统数据交互时数据安全的管控方法 - Google Patents

一种在线系统和离线系统数据交互时数据安全的管控方法 Download PDF

Info

Publication number
CN105554038A
CN105554038A CN201610103283.1A CN201610103283A CN105554038A CN 105554038 A CN105554038 A CN 105554038A CN 201610103283 A CN201610103283 A CN 201610103283A CN 105554038 A CN105554038 A CN 105554038A
Authority
CN
China
Prior art keywords
line system
data
file
encryption
control method
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
CN201610103283.1A
Other languages
English (en)
Inventor
傅慧
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Inspur General Software Co Ltd
Original Assignee
Inspur General Software Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Inspur General Software Co Ltd filed Critical Inspur General Software Co Ltd
Priority to CN201610103283.1A priority Critical patent/CN105554038A/zh
Publication of CN105554038A publication Critical patent/CN105554038A/zh
Pending legal-status Critical Current

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/08Network architectures or network communication protocols for network security for authentication of entities
    • H04L63/083Network architectures or network communication protocols for network security for authentication of entities using passwords

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Computer Security & Cryptography (AREA)
  • Computing Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Storage Device Security (AREA)

Abstract

本发明公开了一种在线系统和离线系统数据交互时数据安全的管控方法,属于数据交互时数据安全技术领域,本发明解决在线系统和离线系统并行的时候,两个系统之间数据传送时,容易导致数据泄密或是被非法篡改的问题。技术方案为:对数据进行对象格式,实现第一次加密;形成介质文件时,通过对文件加密的方式,实现第二次的加密;通过压缩文件时录入压缩加密密码的方式,实现第三次加密;导入数据时,对用户密码进行验证,验证通过,进行下一步;进行压缩加密密码验证,验证通过,进行下一步;导入数据。

Description

一种在线系统和离线系统数据交互时数据安全的管控方法
技术领域
本发明涉及一种数据交互时数据安全技术领域,具体地说是一种在线系统和离线系统数据交互时数据安全的管控方法。
背景技术
某业务管理信息系统,采用“集中/分布式”的架构,主要分成两大块:一、总公司/分公司管理系统,主要侧重业务规范,管理,监督,综合查询,决策分析等;二、承储库管理系统,主要侧重业务执行,业务数据收集,报表上报等。
根据管理需要,每个各承储库,会定期编制统一格式的报表给总公司,在编制报表的过程中,为了用户使用方便,系统支持离线系统编制报表,在离线系统编制完报表后,可以通过导入的方式,将数据导入在线系统,然后通过数据交换的方式上传至分公司、总公司。
线系统和离线系统并行的时候,两个系统之间数据传送时,容易导致数据泄密或是被非法篡改的问题。
发明内容
本发明的技术任务是针对以上不足之处,提供一种在线系统和离线系统数据交互时数据安全的管控方法,来解决在线系统和离线系统并行的时候,两个系统之间数据传送时,容易导致数据泄密或是被非法篡改的问题。
本发明解决其技术问题所采用的技术方案是:
一种在线系统和离线系统数据交互时数据安全的管控方法,
(1)、在线系统导出数据进离线系统步骤如下:
①、在线系统导出数据时,通过对数据进行对象格式的方式,实现第一次加密;
②、在线系统导出数据,形成介质文件时,通过对文件加密的方式,实现第二次的加密;
③、数据导出,文件形成后,通过压缩文件时录入压缩加密密码的方式,实现第三次加密;
④、导入数据进入离线系统时,离线系统对用户密码进行验证,验证通过,进行下一步;
⑤、导入数据进入离线系统时,离线系统进行压缩加密密码验证,验证通过,进行下一步;
⑥、离线系统导入数据;
(2)、离线系统回导数据进在线系统步骤如下:
①、离线系统对数据进行对象格式的方式,实现第一次加密;
②、离线系统导出数据,形成介质文件时,通过对文件加密的方式,实现第二次的加密;
③、数据导出,文件形成后,通过压缩文件时录入压缩加密密码的方式,实现第三次加密;
④、导入数据进入在线系统时,在线系统对用户密码进行验证,验证通过,进行下一步;
⑤、导入数据进入在线系统时,在线系统进行压缩加密密码验证,验证通过,进行下一步;
⑥、数据回导进在线系统。
步骤(1)的①中,在线系统导出数据时,根据在线系统中定义的对象格式,以串行化字符流的形式,将数据形成字符流再导出,实现第一次加密。
步骤(2)的①中,离线系统导出数据时,根据离线系统中定义的对象格式,以串行化字符流的形式,将数据形成字符流再导出,实现第一次加密。
步骤(1)中,在线系统对敏感数据控制:在线系统支持通过预配置的方式,设定允许导出数据和不允许导出数据;在线系统导出数据时,仅导出允许导出数据,不允许导出的数据系统自动识别,不导出。
离线系统提供数据的隔离机制,不同的用户相互之间进行数据隔离;保证数据的私密性,每个用户只能看到自己导入的数据,不能看到其它用户导入的数据。
步骤(2)中,在离线系统回导数据进在线系统时,系统自动识别离线系统中的数据与在线系统中数据的差异,并展示给用户,以帮助用户是否确定要导入。
步骤(2)中,在线系统读取回导的数据时,对加密文件内容进行解密。
本发明的一种在线系统和离线系统数据交互时数据安全的管控方法和现有技术相比,具有以下有益效果:通过在线系统导出数据时进行加密,离线系统导入数据时进行解密验证的方式,保证了数据的私密性;设计合理、结构简单、易于加工、体积小、使用方便、一物多用等特点,因而,具有很好的推广使用价值。
附图说明
下面结合附图对本发明进一步说明。
附图1为一种在线系统和离线系统数据交互时数据安全的管控方法的在线系统导出数据的流程图;
附图2为一种在线系统和离线系统数据交互时数据安全的管控方法的离线系统导入数据的流程图。
具体实施方式
下面结合附图和具体实施例对本发明作进一步说明。
实施例1:
本发明的一种在线系统和离线系统数据交互时数据安全的管控方法,
(1)、在线系统导出数据进离线系统步骤如下:在线系统对敏感数据控制,在线系统支持通过预配置的方式,设定允许导出数据和不允许导出数据;在线系统导出数据时,仅导出允许导出数据,不允许导出的数据系统自动识别,不导出;
①、在线系统导出数据时,根据在线系统中定义的对象格式,以串行化字符流的形式,将数据形成字符流再导出,实现第一次加密;
②、在线系统导出数据,形成介质文件时,通过对文件加密的方式,实现第二次的加密;
③、数据导出,文件形成后,通过压缩文件时录入压缩加密密码的方式,实现第三次加密;
④、导入数据进入离线系统时,离线系统对用户密码进行验证,验证通过,进行下一步;
⑤、导入数据进入离线系统时,离线系统进行压缩加密密码验证,验证通过,进行下一步;
⑥、离线系统导入数据;离线系统提供数据的隔离机制,不同的用户相互之间进行数据隔离;保证数据的私密性,每个用户只能看到自己导入的数据,不能看到其它用户导入的数据。
(2)、离线系统回导数据进在线系统步骤如下:
①、离线系统导出数据时,根据离线系统中定义的对象格式,以串行化字符流的形式,将数据形成字符流再导出,实现第一次加密;
②、离线系统导出数据,形成介质文件时,通过对文件加密的方式,实现第二次的加密;
③、数据导出,文件形成后,通过压缩文件时录入压缩加密密码的方式,实现第三次加密;
④、导入数据进入在线系统时,在线系统对用户密码进行验证,验证通过,进行下一步;
⑤、导入数据进入在线系统时,在线系统进行压缩加密密码验证,验证通过,进行下一步;
⑥、数据回导进在线系统。
步骤(2)中,在离线系统回导数据进在线系统时,系统自动识别离线系统中的数据与在线系统中数据的差异,并展示给用户,以帮助用户是否确定要导入。
步骤(2)中,在线系统读取回导的数据时,对加密文件内容分别进行压缩密码解密、文件加密密码解密和字符流解密。
实施例2:
本发明的一种在线系统和离线系统数据交互时数据安全的管控方法,
(1)、在线系统导出数据进离线系统步骤如下:在线系统对敏感数据控制,在线系统支持通过预配置的方式,设定允许导出数据和不允许导出数据;在线系统导出数据时,仅导出允许导出数据,不允许导出的数据系统自动识别,不导出;
①、在线系统导出数据时,根据在线系统中定义的对象格式,确定需要导出数据结构,抽象形成自己的java对象类,并进行序列化;导出数据时,将指定的java对象以字符流的形成输出,实现第一次加密;涉及到的部分代码如下:
publicclassReportDataSaveObjectimplementsSerializable{
……………………
}。
②、在线系统导出数据,形成介质文件时,通过对文件加密的方式,实现第二次的加密;涉及到的部分代码如下:
publicstaticbooleanencryptFile(StringsourceFilePath,Stringseed){
//加密是否成功标志默认为true
booleanisSuc=true;
try{
//对数据文件名截取得到当前文件所在目录
StringcurFilePath=sourceFilePath.substring(0,sourceFilePath.lastIndexOf(File.separator));
if(seed==null){//不指定seed生成随机密钥
getSecretKey(curFilePath);
}else{//生成指定密钥
getSecretKey(curFilePath,seed);
}
FilesourceFile=newFile(sourceFilePath);
//为目标文件添加加密文件标识
StringdestFilePath=sourceFilePath+ENCRYPFILE_SUFFIX;
FiledestFile=newFile(destFilePath);
//目标文件不存在不再继续执行并给出提示
if(!sourceFile.exists()||!sourceFile.isFile()){
System.err.println("文件:"+sourceFile+"不存在或不是文件,导致加密异常!");
isSuc=false;
}
//创建加密目标文件
destFile.createNewFile();
InputStreamin=newFileInputStream(sourceFile);
OutputStreamout=newFileOutputStream(destFile);
//获取密钥
StringfilePath=curFilePath+File.separator+KEY_FILE;
Filefile=newFile(filePath);
KeyprivateKey=null;
if(file.exists()&&file.isFile()){
privateKey=(Key)FileUtil.readFileData(file);
}else{
System.err.println("密钥文件:"+filePath+"不存在,导致加密异常!");
isSuc=false;
}
byte[]raw=privateKey.getEncoded();
SecretKeySpecsecretKeySpec=newSecretKeySpec(raw,ALGORITHM);
//实例化AES加密器
Ciphercipher=Cipher.getInstance(ALGORITHM);
//初始加密器为加密模式
cipher.init(Cipher.ENCRYPT_MODE,secretKeySpec);
//读入数据并将其加密
CipherInputStreamcin=newCipherInputStream(in,cipher);
byte[]cache=newbyte[CACHE_SIZE];
intnRead=0;
while((nRead=cin.read(cache))!=-1){
out.write(cache,0,nRead);
out.flush();
}
//关闭相关输入流
out.close();
cin.close();
in.close();
//加密后删除源文件
FileUtil.deleteFile(sourceFilePath);
//System.out.println("文件"+sourceFilePath+"加密完成!");
}catch(Exceptione){
isSuc=false;
System.err.println("文件:"+sourceFilePath+"加密异常!");
e.printStackTrace();
}
//返回加密是否成功标识
returnisSuc;
}。
③、数据导出,文件形成后,通过压缩文件时录入压缩加密密码的方式,实现第三次加密;涉及到的部分代码如下:
privatevoidsetOkAction(){
try{
//密钥非空验证
Stringpsw=newString(pswField.getPassword());
Stringrepsw=newString(repswField.getPassword());
if(!(psw!=null&&psw.length()>0)){
JOptionPane.showMessageDialog(this,"请输入安全密钥!","安全密钥设置",JOptionPane.ERROR_MESSAGE);
return;
}
if(!(repsw!=null&&repsw.length()>0)){
JOptionPane.showMessageDialog(this,"请输入确认安全密钥!","安全密钥设置",JOptionPane.ERROR_MESSAGE);
return;
}
if(!repsw.equals(psw)){
JOptionPane.showMessageDialog(this,"您两次输入的密钥不一致,请重新输入!","安全密钥设置",JOptionPane.ERROR_MESSAGE);
return;
}
//密码长度限制在6位或6位以上
if(psw.length()<6){
JOptionPane.showMessageDialog(this,"密钥长度不能少于6位!","安全密钥设置",JOptionPane.ERROR_MESSAGE);
return;
}
this.setVisible(false);
}catch(Exceptione){
e.getStackTrace();
}
}。
④、导入数据进入离线系统时,离线系统对用户密码进行验证,验证通过,进行下一步;离线系统进行压缩加密密码验证,验证通过,进行下一步;涉及到的部分代码如下:
privatevoidverifyLogin(){
//界面输入的用户ID
StringuserIdFromDialog=userIdText.getText();
//界面输入的用户登录密码
StringuserPwdFromDialog=newString(userPwdText.getPassword());
//界面输入的文件密钥
StringfilePwdFromDialog=newString(filePwdText.getPassword());
//空值验证
if(null==userIdFromDialog||"".equals(userIdFromDialog.trim())){
JOptionPane.showMessageDialog(this,"请输入用户名称!");
return;
}
if(null==userPwdFromDialog||"".equals(userPwdFromDialog.trim())){
JOptionPane.showMessageDialog(this,"请输入登录密码!");
return;
}
if(null==filePwdFromDialog||"".equals(filePwdFromDialog.trim())){
JOptionPane.showMessageDialog(this,"请输入文件密钥!");
return;
}
//解压后的临时目录
StringtempZipFileDir=zipFileFullName.substring(0,zipFileFullName.lastIndexOf(".ofl"));
File[]extractedFiles=null;
try{
//在文件当前目录解压
extractedFiles=FileUtil.unzip(zipFileFullName,filePwdFromDialog);
}catch(Exceptione1){
e1.printStackTrace();
JOptionPane.showMessageDialog(this,"导入文件异常,原因可能为:\n1、文件密钥输入错误;\n2、文件已被损坏。\n请重新输入文件密钥或者重新选择文件导入!");
return;
}
if(null==extractedFiles||extractedFiles.length<=0){
JOptionPane.showMessageDialog(this,"导入文件异常,原因可能为:\n1、文件密钥输入错误;\n2、文件已被损坏。\n请重新输入文件密钥或者重新选择文件导入!");
//异常后删除临时目录
FileUtil.deleteDirectory(tempZipFileDir);
return;
}
//用户信息文件路径
StringuFilePath=tempZipFileDir+File.separator+"u";
//概要信息文件路径
StringiFilePath=tempZipFileDir+File.separator+"i";
//数据目录
StringdataDir=tempZipFileDir+File.separator+"d";
FileuFile=newFile(uFilePath);
if(null==uFile||!uFile.exists()||!uFile.isFile()){
JOptionPane.showMessageDialog(this,"导入文件异常,原因:缺失用户信息文件。\n请重新选择文件导入!");
//异常后删除临时目录
FileUtil.deleteDirectory(tempZipFileDir);
return;
}
FileiFile=newFile(iFilePath);
if(null==iFile||!iFile.exists()||!iFile.isFile()){
JOptionPane.showMessageDialog(this,"导入文件异常,原因:缺失概要信息文件。\n请重新选择文件导入!");
//异常后删除临时目录
FileUtil.deleteDirectory(tempZipFileDir);
return;
}
FiledDir=newFile(dataDir);
if(null==dDir||!dDir.exists()||!dDir.isDirectory()||dDir.listFiles().length<=0){
JOptionPane.showMessageDialog(this,"导入文件异常,原因:缺失报表数据目录。\n请重新选择文件导入!");
//异常后删除临时目录
FileUtil.deleteDirectory(tempZipFileDir);
return;
}
//验证用户信息和登录密码
MapuserMap=null;
try{
userMap=(Map)FileUtil.readFileData(uFile);
}catch(Exceptione){
userMap=null;
e.printStackTrace();
}
if(null==userMap){
JOptionPane.showMessageDialog(this,"导入文件异常,原因:用户信息文件内容为空。\n请重新选择文件导入!");
//异常后删除临时目录
FileUtil.deleteDirectory(tempZipFileDir);
return;
}
}。
离线系统提供数据的隔离机制,不同的用户相互之间进行数据隔离;保证数据的私密性,每个用户只能看到自己导入的数据,不能看到其它用户导入的数据。
(2)、离线系统回导数据进在线系统步骤如下:
①、离线系统导出数据时,根据离线系统中定义的对象格式,以串行化字符流的形式,将数据形成字符流再导出,实现第一次加密;
②、离线系统导出数据,形成介质文件时,通过对文件加密的方式,实现第二次的加密;
③、数据导出,文件形成后,通过压缩文件时录入压缩加密密码的方式,实现第三次加密;
①、②和③中涉及到的部分代码如下:
privatevoidsetOkAction(){
try{
//密钥非空验证
Stringpsw=newString(pswField.getPassword());
Stringrepsw=newString(repswField.getPassword());
if(psw==null||psw.length()<=0){
JOptionPane.showMessageDialog(this,"请输入安全密钥!","安全密钥设置",JOptionPane.ERROR_MESSAGE);
return;
}
if(repsw==null||repsw.length()<=0){
JOptionPane.showMessageDialog(this,"请输入确认安全密钥!","安全密钥设置",JOptionPane.ERROR_MESSAGE);
return;
}
if(!repsw.equals(psw)){
JOptionPane.showMessageDialog(this,"您两次输入的密钥不一致,请重新输入!","安全密钥设置",JOptionPane.ERROR_MESSAGE);
return;
}
//密码长度限制在6位或6位以上
if(psw.length()<6){
JOptionPane.showMessageDialog(this,"密钥长度不能少于6位!","安全密钥设置",JOptionPane.ERROR_MESSAGE);
return;
}
this.setVisible(false);
}catch(Exceptione){
e.getStackTrace();
}
}。
④、导入数据进入在线系统时,在线系统对用户密码进行验证,验证通过,进行下一步;
⑤、导入数据进入在线系统时,在线系统进行压缩加密密码验证,验证通过,进行下一步;
⑥、数据回导进在线系统;
④、⑤和⑥中涉及到的部分代码如下:
protectedvoiddoAction(ActionEvente){
//当前所选封面节点
RPFMDMSJcurRpfmdmsj=swanReport.getFmdmsj();
if(null==curRpfmdmsj||!RWConstance.zznm.equals(curRpfmdmsj.getRPFMDMSJ_TBDW())){
JOptionPane.showMessageDialog(swanReport.getFrame(),"非当前登录组织填报的单位不允许导入离线文件!","导入离线文件",JOptionPane.INFORMATION_MESSAGE);
swanReport.getFrame().requestFocus();
return;
}
if(!"1".equals(RWConstance.zznm)&&"9".equals(curRpfmdmsj.getRPFMDMSJ_BBLX())){
JOptionPane.showMessageDialog(swanReport.getFrame(),"汇总单位不允许导入离线文件!","导入离线文件",JOptionPane.INFORMATION_MESSAGE);
swanReport.getFrame().requestFocus();
return;
}
if(!"0".equals(curRpfmdmsj.getRPFMDMSJ_SHBZ())){
JOptionPane.showMessageDialog(swanReport.getFrame(),"该单位已上报,不允许导入离线文件!","导入离线文件",JOptionPane.INFORMATION_MESSAGE);
swanReport.getFrame().requestFocus();
return;
}
//数据未保存,提示。
if(swanReport.getReportStateInfo().isModifyData()){
JOptionPane.showMessageDialog(swanReport.getFrame(),"数据已被修改,请先保存再导入离线文件!","导入离线文件",JOptionPane.INFORMATION_MESSAGE);
swanReport.getFrame().requestFocus();
return;
}
//文件选择窗口
ImportFileChooseDialogchooseDialog=newImportFileChooseDialog(swanReport);
chooseDialog.setSize(550,400);
chooseDialog.setModal(true);
chooseDialog.setCenter(chooseDialog);
chooseDialog.setVisible(true);
}
privatevoidverifyLogin(){
//界面输入的文件密钥
StringfilePwdFromDialog=newString(filePwdText.getPassword());
//空值验证
if(null==filePwdFromDialog||"".equals(filePwdFromDialog.trim())){
JOptionPane.showMessageDialog(this,"请输入安全密钥!");
return;
}
//解压离线数据文件
File[]unzippedFiles=null;
try{
unzippedFiles=FileUtil.unzip(oflFileFullName,filePwdFromDialog);
}catch(ZipExceptione1){
unzippedFiles=null;
}
if(null==unzippedFiles||unzippedFiles.length!=3){
JOptionPane.showMessageDialog(this,"导入文件异常,原因可能为:\n1、文件密钥输入错误;\n2、文件数据已经被损坏。\n请重新输入文件密钥或者重新选择文件导入!","导入离线文件",JOptionPane.ERROR_MESSAGE);
return;
}
//用户信息文件
FileuFile=null;
//概要信息文件
FileiFile=null;
//报表数据文件
FiledFile=null;
for(inti=0;i<unzippedFiles.length;i++){
FiletempFile=unzippedFiles[i];
if("u".equals(tempFile.getName())){
uFile=tempFile;
}elseif("i".equals(tempFile.getName())){
iFile=tempFile;
}elseif("d".equals(tempFile.getName())){
dFile=tempFile;
}
}
if(null==uFile||null==iFile||null==dFile){
JOptionPane.showMessageDialog(this,"您导入的文件数据已经被损坏,请重新选择文件导入!","导入离线文件",JOptionPane.ERROR_MESSAGE);
return;
}
//文件中的用户信息
MapuserMap=null;
//文件中的概要信息
MapinfoMap=null;
//文件中的数据信息
MapdataMap=null;
try{
userMap=(Map)FileUtil.readFileData(uFile.getAbsolutePath());
infoMap=(Map)FileUtil.readFileData(iFile.getAbsolutePath());
dataMap=(Map)FileUtil.readFileData(dFile.getAbsolutePath());
}catch(Exceptione){
e.printStackTrace();
userMap=null;
infoMap=null;
dataMap=null;
}
if(null==userMap||null==infoMap||null==dataMap){
JOptionPane.showMessageDialog(this,"导入文件异常,原因:文件内容为空。\n请重新选择文件导入!","导入离线文件",JOptionPane.ERROR_MESSAGE);
return;
}
//离线文件中的用户ID、组织内码、报表模块、任务编号、任务周期
StringuserIdFromFile=(String)userMap.get("userId");
StringzznmFromFile=(String)userMap.get("zznm");
StringbbmkFromFile=(String)infoMap.get("bbmk");
StringrwbhFromFile=(String)infoMap.get("rwbh");
StringrwzqFromFile=(String)infoMap.get("rwzq");
try{
//查询报表平台中当前登录用户及任务信息
MapparamMap=newHashMap();
paramMap.put("method","getUserAndTaskInfo");
MapreturnMap=(Map)getResultFromDB(paramMap);
//报表平台中的用户ID、组织内码、报表模块、任务编号、任务周期
StringuserIdFromDb=(String)returnMap.get("userId");
StringzznmFromDb=(String)returnMap.get("zznm");
StringbbmkFromDb=(String)returnMap.get("bbmk");
StringrwbhFromDb=(String)returnMap.get("rwbh");
StringrwzqFromDb=(String)returnMap.get("rwzq");
//验证用户信息一致性
if(!userIdFromFile.equals(userIdFromDb)||!zznmFromFile.equals(zznmFromDb)){
JOptionPane.showMessageDialog(this,"导入文件异常,原因:该文件不是由当前登录用户从离线应用中导出的。\n请重新选择文件导入!","导入离线文件",JOptionPane.ERROR_MESSAGE);
return;
}
//验证任务信息一致性
if(!bbmkFromFile.equals(bbmkFromDb)||!rwbhFromFile.equals(rwbhFromDb)||!rwzqFromFile.equals(rwzqFromDb)){
JOptionPane.showMessageDialog(this,"导入文件异常,原因:该文件中的任务信息与当前默认任务不一致。\n请重新选择文件导入!","导入离线文件",JOptionPane.ERROR_MESSAGE);
return;
}
//当前所选封面节点
RPFMDMSJcurRpfmdmsj=report.getFmdmsj();
//当前封面的填报单位、本级代码、报表类型
StringcurFm_tbdw=curRpfmdmsj.getRPFMDMSJ_TBDW();
StringcurFm_bjdm=curRpfmdmsj.getRPFMDMSJ_BJDM();
StringcurFm_bblx=curRpfmdmsj.getRPFMDMSJ_BBLX();
//离线文件中的封面节点集合
ListimportedFmdmList=(List)infoMap.get("fmdmsjListForFile");
//离线文件中是否存在当前封面的数据
booleanbHasCurFm=false;
//验证封面信息一致性
for(inti=0;i<importedFmdmList.size();i++){
MaptempFm=(Map)importedFmdmList.get(i);
if(curFm_tbdw.equals(tempFm.get("tbdw"))&&curFm_bjdm.equals(tempFm.get("bjdm"))&&curFm_bblx.equals(tempFm.get("bblx"))){
bHasCurFm=true;
break;
}
}
if(!bHasCurFm){
JOptionPane.showMessageDialog(this,"导入文件异常,原因:该文件中不存在当前封面单位的数据。\n请重新选择文件导入!","导入离线文件",JOptionPane.ERROR_MESSAGE);
return;
}
this.setVisible(false);
//当前封面节点的所有数据
MapdataMapForCurFm=(Map)dataMap.get(curFm_tbdw+"-"+curFm_bjdm+"-"+curFm_bblx);
//展示文件中的数据
ImportFileShowDataDialogshowDataDialog=newImportFileShowDataDialog(report,this,"导入数据信息",infoMap,dataMapForCurFm);
showDataDialog.setResizable(false);
}catch(Exceptione){
e.printStackTrace();
}
}。
步骤(2)中,在离线系统回导数据进在线系统时,系统自动识别离线系统中的数据与在线系统中数据的差异,并展示给用户,以帮助用户是否确定要导入。
步骤(2)中,在线系统读取回导的数据时,对加密文件内容分别进行压缩密码解密、文件加密密码解密和字符流解密;涉及到的部分代码如下:
publicstaticbooleandecryptFile(StringdestFilePath){
//解密是否成功标志默认为true
booleanisSuc=true;
try{
//对数据文件名截取得到当前文件所在目录
StringcurFilePath=destFilePath.substring(0,destFilePath.lastIndexOf(File.separator));
//添加加密文件标识
StringsourceFilePath=destFilePath+ENCRYPFILE_SUFFIX;
FilesourceFile=newFile(sourceFilePath);
//源文件不存在程序停止执行并给出提示
if(!sourceFile.exists()||!sourceFile.isFile()){
System.err.println("文件:"+sourceFile+"不存在或不是文件,导致解密异常!");
isSuc=false;
}
FiledestFile=newFile(destFilePath);
//创建解密目标文件
destFile.createNewFile();
FileOutputStreamout=newFileOutputStream(destFile);
FileInputStreamin=newFileInputStream(sourceFile);
//获取密钥
StringfilePath=curFilePath+File.separator+KEY_FILE;
Filefile=newFile(filePath);
KeyprivateKey=null;
if(file.exists()){
privateKey=(Key)FileUtil.readFileData(file);
}else{
System.err.println("密钥文件:"+filePath+"不存在,导致加密异常!");
isSuc=false;
}
byte[]raw=privateKey.getEncoded();
SecretKeySpecsecretKeySpec=newSecretKeySpec(raw,ALGORITHM);
//实例化AES加密器
Ciphercipher=Cipher.getInstance(ALGORITHM);
//初始加密器为解密模式
cipher.init(Cipher.DECRYPT_MODE,secretKeySpec);
//将在写出该加密数据之前,尝试解密数据。
CipherOutputStreamcout=newCipherOutputStream(out,cipher);
byte[]cache=newbyte[CACHE_SIZE];
intnRead=0;
while((nRead=in.read(cache))!=-1){
cout.write(cache,0,nRead);
cout.flush();
}
//关闭相关输入流
cout.close();
out.close();
in.close();
//解密后删除源文件
//FileUtil.deleteFile(sourceFilePath);
}catch(Exceptione){
isSuc=false;
System.err.println("文件:"+destFilePath+"解密异常!");
e.printStackTrace();
}
//返回解密是否成功标识
returnisSuc;
}。
通过上面具体实施方式,所述技术领域的技术人员可容易的实现本发明。但是应当理解,本发明并不限于上述的具体实施方式。在公开的实施方式的基础上,所述技术领域的技术人员可任意组合不同的技术特征,从而实现不同的技术方案。
除说明书所述的技术特征外,均为本专业技术人员的已知技术。

Claims (7)

1.一种在线系统和离线系统数据交互时数据安全的管控方法,其特征在于:
(1)、在线系统导出数据进离线系统步骤如下:
①、在线系统导出数据时,通过对数据进行对象格式的方式,实现第一次加密;
②、在线系统导出数据,形成介质文件时,通过对文件加密的方式,实现第二次的加密;
③、数据导出,文件形成后,通过压缩文件时录入压缩加密密码的方式,实现第三次加密;
④、导入数据进入离线系统时,离线系统对用户密码进行验证,验证通过,进行下一步;
⑤、导入数据进入离线系统时,离线系统进行压缩加密密码验证,验证通过,进行下一步;
⑥、离线系统导入数据;
(2)、离线系统回导数据进在线系统步骤如下:
①、离线系统对数据进行对象格式的方式,实现第一次加密;
②、离线系统导出数据,形成介质文件时,通过对文件加密的方式,实现第二次的加密;
③、数据导出,文件形成后,通过压缩文件时录入压缩加密密码的方式,实现第三次加密;
④、导入数据进入在线系统时,在线系统对用户密码进行验证,验证通过,进行下一步;
⑤、导入数据进入在线系统时,在线系统进行压缩加密密码验证,验证通过,进行下一步;
⑥、数据回导进在线系统。
2.根据权利要求1所述的一种在线系统和离线系统数据交互时数据安全的管控方法,其特征在于步骤(1)的①中,在线系统导出数据时,根据在线系统中定义的对象格式,以串行化字符流的形式,将数据形成字符流再导出,实现第一次加密。
3.根据权利要求1所述的一种在线系统和离线系统数据交互时数据安全的管控方法,其特征在于步骤(2)的①中,离线系统导出数据时,根据离线系统中定义的对象格式,以串行化字符流的形式,将数据形成字符流再导出,实现第一次加密。
4.根据权利要求1所述的一种在线系统和离线系统数据交互时数据安全的管控方法,其特征在于步骤(1)中,在线系统对敏感数据控制:在线系统支持通过预配置的方式,设定允许导出数据和不允许导出数据;在线系统导出数据时,仅导出允许导出数据。
5.根据权利要求1所述的一种在线系统和离线系统数据交互时数据安全的管控方法,其特征在于,离线系统提供数据的隔离机制,不同的用户相互之间进行数据隔离。
6.根据权利要求1所述的一种在线系统和离线系统数据交互时数据安全的管控方法,其特征在于步骤(2)中,在离线系统回导数据进在线系统时,系统自动识别离线系统中的数据与在线系统中数据的差异,并展示给用户。
7.根据权利要求1所述的一种在线系统和离线系统数据交互时数据安全的管控方法,其特征在于步骤(2)中,在线系统读取回导的数据时,对加密文件内容进行解密。
CN201610103283.1A 2016-02-25 2016-02-25 一种在线系统和离线系统数据交互时数据安全的管控方法 Pending CN105554038A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201610103283.1A CN105554038A (zh) 2016-02-25 2016-02-25 一种在线系统和离线系统数据交互时数据安全的管控方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201610103283.1A CN105554038A (zh) 2016-02-25 2016-02-25 一种在线系统和离线系统数据交互时数据安全的管控方法

Publications (1)

Publication Number Publication Date
CN105554038A true CN105554038A (zh) 2016-05-04

Family

ID=55832972

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201610103283.1A Pending CN105554038A (zh) 2016-02-25 2016-02-25 一种在线系统和离线系统数据交互时数据安全的管控方法

Country Status (1)

Country Link
CN (1) CN105554038A (zh)

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107066876A (zh) * 2017-01-18 2017-08-18 捷开通讯(深圳)有限公司 一种自动设置密码的密码管理装置及管理方法
CN109325826A (zh) * 2018-09-07 2019-02-12 山东中磁视讯股份有限公司 一种受限环境下购物配送结算方法及系统
CN110008657A (zh) * 2018-01-05 2019-07-12 武汉斗鱼网络科技有限公司 一种保护网页代码的方法、存储介质、电子设备和系统
CN110502478A (zh) * 2019-08-23 2019-11-26 成都九洲电子信息系统股份有限公司 一种离线系统之间的数据交互方法及系统
CN113419999A (zh) * 2021-08-25 2021-09-21 四川省林业和草原调查规划院 林草综合监测评价图斑监测成果报送加密防护方法和系统
CN114036215A (zh) * 2021-08-19 2022-02-11 阿里云计算有限公司 加密数据库的访问方法、计算设备及存储介质

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1845108A (zh) * 2005-04-06 2006-10-11 江苏省电力公司 数字档案馆工程档案模板及其操控运行方法
CN1932810A (zh) * 2005-09-13 2007-03-21 李晓耕 一种利用加密技术进行数据存储和共享的方法
US7844829B2 (en) * 2006-01-18 2010-11-30 Sybase, Inc. Secured database system with built-in antivirus protection
CN103888475A (zh) * 2014-04-11 2014-06-25 北京鸿达以太文化发展有限公司 一种对多媒体数据的保护方法和装置
CN104732163A (zh) * 2015-04-03 2015-06-24 宁波工程学院 一种文件夹加密方法及加密文件使用方法

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1845108A (zh) * 2005-04-06 2006-10-11 江苏省电力公司 数字档案馆工程档案模板及其操控运行方法
CN1932810A (zh) * 2005-09-13 2007-03-21 李晓耕 一种利用加密技术进行数据存储和共享的方法
US7844829B2 (en) * 2006-01-18 2010-11-30 Sybase, Inc. Secured database system with built-in antivirus protection
CN103888475A (zh) * 2014-04-11 2014-06-25 北京鸿达以太文化发展有限公司 一种对多媒体数据的保护方法和装置
CN104732163A (zh) * 2015-04-03 2015-06-24 宁波工程学院 一种文件夹加密方法及加密文件使用方法

Cited By (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107066876A (zh) * 2017-01-18 2017-08-18 捷开通讯(深圳)有限公司 一种自动设置密码的密码管理装置及管理方法
CN110008657A (zh) * 2018-01-05 2019-07-12 武汉斗鱼网络科技有限公司 一种保护网页代码的方法、存储介质、电子设备和系统
CN109325826A (zh) * 2018-09-07 2019-02-12 山东中磁视讯股份有限公司 一种受限环境下购物配送结算方法及系统
CN110502478A (zh) * 2019-08-23 2019-11-26 成都九洲电子信息系统股份有限公司 一种离线系统之间的数据交互方法及系统
CN110502478B (zh) * 2019-08-23 2023-05-23 成都九洲电子信息系统股份有限公司 一种离线系统之间的数据交互方法及系统
CN114036215A (zh) * 2021-08-19 2022-02-11 阿里云计算有限公司 加密数据库的访问方法、计算设备及存储介质
CN113419999A (zh) * 2021-08-25 2021-09-21 四川省林业和草原调查规划院 林草综合监测评价图斑监测成果报送加密防护方法和系统
CN113419999B (zh) * 2021-08-25 2021-11-02 四川省林业和草原调查规划院 林草综合监测评价图斑监测成果报送加密防护方法和系统

Similar Documents

Publication Publication Date Title
CN109040090B (zh) 一种数据加密方法及装置
CN105554038A (zh) 一种在线系统和离线系统数据交互时数据安全的管控方法
CN109150499B (zh) 动态加密数据的方法、装置、计算机设备和存储介质
CN101196855B (zh) 移动加密存储设备及密文存储区数据加解密处理方法
US11880831B2 (en) Encryption system, encryption key wallet and method
CN110460439A (zh) 信息传输方法、装置、客户端、服务端及存储介质
EP1850261A1 (en) Program conversion device and program execution device
CN103701829B (zh) 一种离线解析dpapi加密数据的方法
CN103546547B (zh) 一种云存储文件加密系统
EP4273843A1 (en) Data sharing system, data sharing method, and data sharing program
CN105184181B (zh) 文件的加密方法、解密方法及装置
CN104866784B (zh) 一种基于bios加密的安全硬盘、数据加密及解密方法
CN106682521B (zh) 基于驱动层的文件透明加解密系统及方法
CN114186264A (zh) 数据随机加密、解密方法、装置及系统
CN103138932B (zh) 一种Mifare卡扇区密钥的配置方法及系统
CN107306254A (zh) 基于双层加密的数字版权保护方法及系统
CN103577769A (zh) 文件内容安全管理方法及管理系统
Park et al. A methodology for the decryption of encrypted smartphone backup data on android platform: A case study on the latest samsung smartphone backup system
CN104182691B (zh) 数据保密方法及装置
CN111435389A (zh) 一种配电终端运维工具安全防护系统
CN101539890B (zh) 数据处理系统、密码管理方法及数据读取与写入方法
CN113190859A (zh) 基于区块链的数据分级加密方法
CN102270182B (zh) 基于同步用户和主机认证的加密可移动存储设备
CN114117499B (zh) 一种基于权限管理的可信数据交换方法
CN100550735C (zh) 多功能智能密钥设备及其安全控制的方法

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
WD01 Invention patent application deemed withdrawn after publication

Application publication date: 20160504

WD01 Invention patent application deemed withdrawn after publication