本发明涉及通信信息技术领域,具体地说是一种ERP在线文档加密的方法。
背景技术:
随着信息化进程的推进,信息安全建设的重点,从早期的信息系统自身的安全,已经过渡到信息内容的安全。存储于各种设备上的电子文档,正遭受来自内部和外部的各种途径的泄露。文件泄露现象愈演愈烈,给企业带来严重的后果。因此,随着市场的需求,基于文件泄露防护需求而诞生的文件加密手段,逐渐走进政府机关、军队和企事业单位,保护数据安全,越来越多的人意识到文件加密的重要性。当然加密机制并非越安全越好,根据安全级别的不同,采用的加密机制可能都不同,需要依赖于具体的业务场景,离开业务场景谈论加密算法都是毫无意义的。为了解决电子文档安全问题,我们提供了一套完整的解决方案,现提供一种ERP在线文档加密的方法。
技术实现要素:
本发明的技术任务是针对以上不足之处,提供一种ERP在线文档加密的方法。
一种ERP在线文档加密的方法,其具体实现过程为:
首先定义文档共享目录设置的数据表;
定义共享目录权限设置,用于分配文档维护人员共享目录的查看权限;
设置加密规则,该加密规则包括加密规则编号、描述及加密规则设置信息;
设置密级字典,该字典包括密级编号、描述及加密规则,其中加密规则为上述加密规则设置中定义的信息;
设置文件夹,用于区分文件的逻辑存储目录,根据文件分类、文件的密级设置;
文档管理,用户上传、在线编辑文档使用,上传文档时,指定文档的逻辑存储目录,便于控制文档上传及编辑时进行加密控制。
所述共享目录包括存储位置的描述、存储位置IP地址、用于存取电子文档而独立设置的用户名、密码信息。
所述加密规则中定义多种加密设置,包括:不加密、读写加密、帐套实例、动态验证码;其中,
1)设置为不加密时,文件的上传读写均不加密,脱机状态下,即不使用文档在线编辑器时,上传至共享目录相应位置的电子文档可正常查看;
2)设置为读写加密时,文件的上传读写加密,脱机状态下,即不使用文档在线编辑器,上传至共享目录相应位置的电子文档后无法正常查看;
3)设置为帐套实例时,除文件的上传读写加密外,使用文档在线编辑器读取该文件前,系统还会校验当前帐套是否同上传帐套实例一致,校验通过后方可正常读取;
4)设置为动态验证码时,除文件的上传读写加密外,文件写入时,系统随机分配一条动态验证码给该文档,并将该动态验证码进行MD5加密后写入文档信息中,使用文档在线编辑器读取该文件前,系统会校验动态验证码是否同上传文档时生成的验证码一致,校验通过后正常读取。
设置文件夹时,指定文档的共享目录,即文件的实际存储位置,同时指定该文件夹下文档的密级属性。
本发明的一种ERP在线文档加密的方法和现有技术相比,具有以下有益效果:
本发明的一种ERP在线文档加密的方法,实现了ERP在线文档的加密和解密,可以根据客户业务需要,在文档加密规则中灵活设定数据文档加密的规则,实现对不同密级类型的文档的分层控制;与现有技术相比,本发明具有数据安全性高、加密方式灵活等特点,实用性强,适用范围广泛,具有很好的推广应用价值。
具体实施方式
下面结合具体实施例对本发明作进一步说明。
本发明提供了一种ERP在线文档加密的方法,其具体实现过程为:
首先需要定义文档共享目录设置的数据表,共享目录包括存储位置的描述、存储位置IP地址、用于存取电子文档而独立设置的用户名、密码等信息。
定义共享目录权限设置,用于分配文档维护人员共享目录的查看权限。
加密规则设置,用于定义不同的加密规则。加密规则包括加密规则编号、描述及加密规则设置等信息,可定义多种加密设置,例如:不加密、读写加密、帐套实例、动态验证码;
1)设置为不加密时,文件的上传读写均不加密,脱机状态下(不使用文档在线编辑器),上传至共享目录相应位置的电子文档可正常查看);
2)设置为读写加密时,文件的上传读写加密,脱机状态下(不使用文档在线编辑器),上传至共享目录相应位置的电子文档后无法正常查看;
3)设置为帐套实例时,除文件的上传读写加密外,使用文档在线编辑器读取该文件前,系统还会校验当前帐套是否同上传帐套实例一致,校验通过后方可正常读取;
4)设置为动态验证码时,除文件的上传读写加密外,文件写入时,系统会随机分配一条动态验证码给该文档,并将该动态验证码进行MD5加密后写入文档信息中,使用文档在线编辑器读取该文件前,系统会校验动态验证码是否同上传文档时生成的验证码一致,校验通过后方可正常读取;
密级字典设置,用于定义密级字典,该字典包括密级编号、描述及加密规则,其中加密规则为上述加密规则设置中定义的信息。
文件夹设置,用于区分文件的逻辑存储目录,可根据文件分类、文件的密级灵活设置。创建文件夹时,需指定文档的共享目录,即文件的实际存储位置。创建文件夹时,也可指定该文件夹下文档的密级属性,无需为每个文档逐一设置密级。
文档管理,用户上传、在线编辑文档使用,上传文档时,需指定文档的逻辑存储目录,便于控制文档上传及编辑时进行加密控制。
本发明中实现的具体代码为:
private string SetFileUserAuth()
{
string retMes = string.Empty;
string strsql = string.Empty;
string strobjID = Request.Form["objID"].ToString();/*选中后使用 拼接的字符串*/
string strunobjID = Request.Form["unObjID"].ToString();/*选中后又取消使用 拼接的字符串*/
string strUserID = Request.Form["userid"].ToString(); /*用户ID*/
string strUtype = Request.Form["utype"].ToString(); /*用户类型*/
string[] arrCheck = strobjID.Split(new char[]{','});
string[] arrUnCheck = strunobjID.Split(new char[]{','});
string strUserType = Request.Form["uType"].ToString();/*用户类型*/
string createtime = DateTime.Now.ToShortDateString();/*生效日期 默认为当前日期*/
string endtime = string.Empty;/*结束日期 默认为空*/
//创建人
string ucreater = Session["UserName"].ToString();
//选中后又取消使用 拼接的字符串 字符串格式示例:r01:file^17d14465-4e04-4299-9f91-39a31fe79f8b,r02:folder^17d14465-4e04-4299-9f91-39a31fe79f8b
if (!strunobjID.Equals(string.Empty))
{
foreach (string struncheck in arrUnCheck)
{
//解析字符串 解析后的字符串格式示例:r01:file^17d14465-4e04-4299-9f91-39a31fe79f8b
if (struncheck != "")
{
string strUnobjid = struncheck.Split(new char[] { '^' })[1];// 授权对象内码 解析后的字符串格式示例:17d14465-4e04-4299-9f91-39a31fe79f8b
string strRcode = struncheck.Split(new char[] { ':' })[0].ToUpper();// 授权编号(为保证统一 字母统一为大写格式) 解析后的字符串格式示例 :R01
//根据选中的授权对象内码、授权编号及授权用户 删除已分配的权限
strsql += String.Format("delete from SDSYSFILEAUTH where SDSYSFILEAUTH_FID ='{0}' AND SDSYSFILEAUTH_USER='{1}' AND SDSYSFILEAUTH_RightCode='{2}'; ", strUnobjid, strUserID, strRcode);
}
}
}
//新增项不为空,执行新增操作 字符串格式示例:r01:file^17d14465-4e04-4299-9f91-39a31fe79f8b,r02:folder^17d14465-4e04-4299-9f91-39a31fe79f8b
if (!strobjID.Equals(string.Empty))
{
foreach (string strcheck in arrCheck)
{
//解析字符串 解析后的字符串格式示例:r01:file^17d14465-4e04-4299-9f91-39a31fe79f8b
if (strcheck != "")
{
string strckobjid = strcheck.Split(new char[] { '^' })[1];// 授权对象内码 解析后的字符串格式示例:17d14465-4e04-4299-9f91-39a31fe79f8b
string strRcode = strcheck.Split(new char[] { ':' })[0].ToUpper();// 授权编号(为保证统一 字母统一为大写格式) 解析后的字符串格式示例 :R01
string strRtype = strcheck.Split(new char[] { '^' })[0].Split(new char[] { ':' })[1]; //权限对象类型 解析后的字符串格式示例:file/folder
//根据选中的授权对象内码、授权编号及授权用户 删除已分配的权限(避免权限重复)
strsql += String.Format("delete from SDSYSFILEAUTH where SDSYSFILEAUTH_FID='{0}' AND SDSYSFILEAUTH_USER='{1}' AND SDSYSFILEAUTH_RightCode='{2}'; ", strckobjid, strUserID, strRcode);
//插入权限信息
strsql += String.Format("insert into SDSYSFILEAUTH(SDSYSFILEAUTH_ID,SDSYSFILEAUTH_TYPE,SDSYSFILEAUTH_FID,SDSYSFILEAUTH_AuthObjType,SDSYSFILEAUTH_USER,SDSYSFILEAUTH_RightCode,SDSYSFILEAUTH_AuthDateTime,SDSYSFILEAUTH_AuthUserID) values(NEWID(),'{0}','{1}','{2}','{3}','{4}','{5}','{6}'); ", strRtype, strckobjid, strUtype, strUserID, strRcode, createtime, ucreater);
}
}
}
if (!strsql.Equals(string.Empty))
{
Try
{
RunSql(strsql, null);
retMes = "{suc:true,msg:\"操作成功!\"}";
}
Catch
{
retMes = "{suc:false,msg:\"操作失败,请重试!\"}";
}
}
return retMes;
}
本发明实现了文档的读写加密及文档的二次加密解密,可以很大程度上避免企业重要文件泄露的风险,保证了企业文件信息的安全。该实现方式,不同于复杂的加密算法,对电脑配置要求不高,具有良好的稳定性和兼容性。
通过上面具体实施方式,所述技术领域的技术人员可容易的实现本发明。但是应当理解,本发明并不限于上述的具体实施方式。在公开的实施方式的基础上,所述技术领域的技术人员可任意组合不同的技术特征,从而实现不同的技术方案。
除说明书所述的技术特征外,均为本专业技术人员的已知技术。