数据库分组加密算法—R加密算法_安企神电脑终端安全管理监控软件
安企神电脑监控软件 在线试用
扫码咨询客服
安企神电脑监控软件、局域网监控软件
首页
功能对比
下载中心
购买咨询
客户列表
关于安企神

数据库分组加密算法—R加密算法

更新时间:2022-10-28 15:43:58


本文简介:R加密算法综合了RC5、RC6加密算法的优点并保持小的分组,使之更适合用于对数据库文件加密。安全性比RC5、DES高,密钥长度可变,能抵抗密钥穷举攻击。R加密算法加解密速度快,可满足数据库加密的要求。一、R加密算法1、 R加密算法的参数和运算R加密算法是对字操作的,所有的基本运算都是以字为基本信息单位。每个字为w比特,这里取w=32,它是可变的,例如也可以取w=64或16。R加密算法有2-字(64

数据库分组加密算法—R加密算法

R加密算法综合了RC5、RC6加密算法的优点并保持小的分组,使之更适合用于对数据库文件加密。安全性比RC5、DES高,密钥长度可变,能抵抗密钥穷举攻击。R加密算法加解密速度快,可满足数据库加密的要求。

一、R加密算法

1、 R加密算法的参数和运算

R加密算法是对字操作的,所有的基本运算都是以字为基本信息单位。每个字为w比特,这里取w=32,它是可变的,例如也可以取w=64或16。R加密算法有2-字(64比特)的输入(明文)和输出(密文)分组大小。

R加密算法使用一个源自用户提供的密钥的扩展密钥表S表,S的大小依赖于轮数r:S有t=2(r+2)个字。

所用的参数如下:

w:字长。每个字有u=(w/8)个8比特字节。w的标准值为32,容许取16,32,64。明文和密文分组都是2w比特长。

r:轮数。相应的扩展密钥表S含有t=2(r+2)个字。r的取值范围为12,13,…,255。

除了w和r外,R算法的密钥长度可变,可由b和K指定:b:密钥K的字节数。b的取值范围为16,17,…,255。K:b字节密钥:K[0],K[1],…,K[b-1]。

因此R加密算法一般记为R-w/r/b。

算法中涉及到的运算有:

lg(x)        x的以2为底的对数

a+b         两个字模w2加

a-b       两个字模w2减

a⊕b       两个字比特对位模2加(异或)

a×b         两个字模w2乘

a<<<b        w比特字a循环左移b位

a>>>b        w比特字a循环右移b位

2、R加密算法介绍

R加密算法的明文输入包含2个字,记为A和B。

算法用到一个包含t=2(r+2)个字的扩展密钥表S[0,…,t-1],由用户提供的密钥K得到。算法由3部分组成:密钥扩展算法,加密算法和解密算法。

(1)密钥扩展

密钥扩展算法用到两个字长的二进制常量,Pw和Qw:

数据库加密分组加密算法—R加密算法

数据库加密分组加密算法—R加密算法

其中,e=2.718281828459…(自然对数的底),φ=1.618033988749…(黄金分割率),Odd(x)为大于等于x的最小奇数。当w=32时:

P32=b7e15163

Q32=9e3779b9

将密钥由字节转化为字

将密钥K[0,…,b-1](字节)放入L[0,…,c-1](字)中,其中c=[b/u](≥b/u的最小整数,u=w/8为一个字的字节数)。没有填充的部分为0。

for   i=b-1down  to     0do

L[i/u]=(L[i/u]&lt;&lt;&lt;8)+K[i];

初始化数组S

S[0]=wP;

for  i  =1  to  t  -1  do  S[i]=S[i-1] +wQ;

与密钥混合

i=j=0;

temp  a=temp  b=0;

do  3*max(t,c)times:

temp  a=S[i]=(S[i]+temp  a+temp   b)<<<3;

temp  b=L[j]=(L[j]+temp  a+temp  b)<<<(temp  a+temp  b);

i=(i+1)mod(t);

j=(j+1)mod(c);

该密钥扩展函数有一定的单向性:从S很难得到K。

(2)加密算法

我们假设输入分组放在两个w比特寄存器A和B中。并且假设密钥扩展已经执行。R-w/r/b算法的加密过程如图1所示。

数据库分组加密算法—R加密算法(图3)

下面是加密算法的伪代码:

A=A+S[0];

B=B+S[1];

for  i=1 to  r  do

temp  b=B×(2B+1);

A=((A⊕B)<<<temp  b)+S[2i];

temp  a=A×(2A+1);

B=((B⊕A)<<<temp  a)+S[2i+1];

A=A+S[2r+2];

B=B+S[2r+3];

输出在寄存器A和B中。

(3)解密函数

解密函数与加密函数类似。

B=B-S[2r+3];

A=A-S[2r+2];

for  i = r  to  1  do

temp  a= A×(2A+1);

B=((B-S[2i+1])>>>temp  a)⊕A;

temp  b=B×(2B+1);

A=((A-S[2i])>>>temp  b)⊕B;

B=B-S[1];

A=A-S[0];

二、R加密算法安全性分析

我们对R加密算法的安全性作了一定的分析,主要测试w=32的情况。

首先测试了输入和输出比特之间的相关性,发现当轮数在4时输入和输出的单个比特间具有非常均匀的相关性。

其次分析了每个明文比特与可变循环移位个数之间的关系,就是看改变一个明文比特是否会引起循环移位个数的改变。发现到7轮时每个明文比特都会引起不同程度的循环移位个数的变化。

在实际使用中轮数一般应大于等于这些简单测试中建议的轮数。建议用12轮或以上轮数。R算法中用到的变化的循环移位数可以抵抗差分攻击和线性攻击。

另外,R加密算法加解密速度快,对数据库操作时延小,用户基本上感觉不出来。

三、R加密算法在某“业务MIS”的数据库加密系统中的应用

除了采用身份验证、访问控制等安全机制外,开发了用于该应用系统的数据库加密系统。本数据库加密系统采用基于字段的加密方式,密文直接存储在原数据表中,由于密文长度可能会大于明文长度,因此在数据库设计时,需将加密字段的长度设置大一些。为简化密钥的管理和不影响数据库操作的效率,密钥的管理采用折衷的方法,每个记录一个密钥,因此在数据库设计时还需为每个表增加一存放密钥的字段。

1、数据库加密系统功能组成

数据库加密系统主要分成两部分:一个是加密字典表管理模块;另一个是加解密处理模块。

用户对数据库信息具体的加密要求记载在加密字典表中。加密字典管理模块完成加密字典表的维护工作,提供了加密字典表维护、表加密、表解密等功能,它利用数据库加解密处理模块完成对已有数据的加密或解密处理。该模块由系统管理员使用,普通用户不必关心。

数据库加解密处理模块是数据库加密系统的核心部分,负责完成数据库信息的加解密处理。包括加密字典表的检索、加密密钥的生成、SQL语句的分析、加解密算法实现等功能,均以公共函数的形式给出。对数据库应用系统的用户是透明的。

该数据库加密系统实行二级密钥管理。一级密钥为主密钥,二级密钥为工作密钥。整个系统一个主密钥,它负责对二级密钥信息加密。工作密钥用于对数据库数据的加解密。一个记录一个工作密钥,经一级密钥加密后存放在每个表的一个密钥字段中。工作密钥由每个记录的id字段内容和由第一次生成密钥时的当前时间生成的一随机数组成,长度不确定,最长为100B。id字段内容在用户录入数据时,系统自动生成,且每个记录的id字段内容都是唯一的。

本系统中,主密钥保护了工作密钥,工作密钥保护敏感信息,因而整个系统的安全依赖于主密钥的安全。主密钥在数据库加密系统设计时指定为一64位二进制数据,经加密后存放于安全区域内,使用时由系统自动获取并解密。

2、R加密算法在数据库加密系统中的实现

由于MIS应用系统选用的数据库平台为MS  SQL  Server7.0,开发工具为Delphi  7.0,而R加密加密算法是针对二进制位数据操作的,所采用的循环移位、异或等位操作用  C语言实现比较容易,因此R加密算法由C++实现,生成动态链接库.dll文件,Delphi应用程序编写调用程序调用.dll文件实现加解密操作。

(1)R加密算法动态链接库的生成

首先使用C++编写加密函数int  encryfunc(char  *s,char  *key)和解密函数int  decodefunc(char*s,char*key),然后将其生成动态链接库decode.dll和encry.dll。在制作.dll文件的多种方法中,选择使用关键字declspec(dllexport),另外使用Extern“C”使不同的编译器都能调用这个.dll文件。

代码如下:

Extern“C”declspec(dllexport)   int  Encry(char*s,char  *key);

Extern“C”declspec(dllexport)  int  Decode(char  *s,char  *key);

(2)Delphi加解密调用函数

加密函数nowencry(miwen:string;key:string):string和解密函数nowdecode(miwen:string;key:string):string使用动态链接的方式分别调用decode.dll和encry.dll,实现对数据库表字段数据的加解密。

在Delphi中使用动态链接的方式调用.dll文件,使用函数Loadlibrary(),Getprocaddress(),freelibrary();在函数的声明部分使用stdcal和cdecl关键词。

@encry:function(s:string;key:string):integer;

cdecl;

@decode:function(s:string;key:string):integer;

cdecl;

在函数的执行部分加入如下语句:

h1:=loadlibrary(‘encry.dll’);

h2:=loadlibrary(‘decode.dll’);

encry:=getprocaddress(h1,’encryfunc’);

decode:=getprocaddress(h2,’decodefunc’);

freelibrary(h1);

//释放.dll文件freelibrary(h2);

小知识之RC5加密算法

RC5分组加密算法是1994由麻萨诸塞技术研究所的Ronald L. Rivest教授发明的,并由RSA实验室分析。它是参数可变的分组密码算法,三个可变的参数是:分组大小、密钥大小和加密轮数。在此算法中使用了三种运算:异或、加和循环。

立即下载试用

如何加密电脑文档,电脑加密软件哪个最好用

如何加密电脑文档,电脑加密软件哪个最好用

不久前,一家知名科技公司的核心研发文件被非法泄露,给公司造成了巨大的经济损失。据调查发现,这是由一名离职员工在离职前通过非法手段获取文件,并将其出售给外部人员所致。这起事件不仅给公司带来巨大的经济损失,更暴露了公司在内部文件保护方面的漏洞。那么、企业在文件保护方面应该怎么做呢?

如何加密电脑文档,电脑加密软件哪个最好用

一、解决方案:

在如今信息高度流通、竞争激烈的商业环境中,保护企业核心数据的重要性不言而喻。我们可以使用专业数据数据加密软件对企业数据进行加密保护,通过加密软件,企业可以对重要的文件和数据进行加密,确保只有授权的人员可以访问和使用这些信息。这样可以有效减少泄露风险,保护企业核心数据的安全。

如何加密电脑文档,电脑加密软件哪个最好用

二、电脑加密软件哪个最好用?

安企神软件以其高效的加密功能和简洁的操作界面受到用户的喜爱。它支持多种加密算法,并提供了灵活的加密设置选项,能够满足不同用户的需求。

安企神软件作为一款国内知名的电脑加密软件,该具有强大的文件加密功能,可以对文件夹、文件进行全盘加密,有效防止数据泄露。

软件采用了先进的透明加密模式,日常使用无感知,但当被非法外发到企业外部电脑后,会自动变成乱码无法使用状态。

如何加密电脑文档,电脑加密软件哪个最好用

三、软件是如何加密电脑文档的

安企神软件通过以下方式加密电脑文档,从而保障数据的安全性:

1、透明无感知加密: 软件采用透明无感知加密技术,即在打开或编辑指定文件时,系统会自动对未加密的文件进行加密,对已加密的文件自动解密。用户在操作过程中无需额外操作,加密过程对用户是透明的,不会改变用户的正常工作习惯和文件使用方式。

2、精细的权限管理: 管理员可以为不同用户或用户组设置不同的文件访问权限,确保只有授权人员能够访问和使用加密文件。这有助于防止未经授权的访问和数据泄露。

3、批量加密与一键操作: 一旦加密策略配置完成,管理员可以通过安企神软件的管理端一键触发批量加密操作。软件将自动扫描企业局域网中所有电脑上的文件,并按照预设的策略进行加密。这大大提高了加密操作的效率和便捷性。

如何加密电脑文档,电脑加密软件哪个最好用

4、审计与追踪功能: 安企神软件能够实时记录文件的加密操作、访问历史以及修改、删除等操作,为管理员提供全面的审计和追踪功能。这有助于管理员及时发现异常行为并采取相应措施,确保数据的安全性。

5、防拷贝与防截图功能: 为防止文件内容被非法复制或截图,安企神软件提供防拷贝和防截图功能。这确保了即使文件被非法获取,其内容也不会被轻易泄露。

6、自动备份与恢复: 软件支持定期备份加密文件,以防数据丢失或损坏。同时,它也提供快速恢复功能,确保在紧急情况下能够迅速恢复文件,减少因数据丢失带来的损失。

如何加密电脑文档,电脑加密软件哪个最好用

四、总结

总的来说,加密电脑文档是保护数据安全的重要措施之一,安企神软件通过其强大的加密功能和丰富的安全管理特性,为用户提供了一个全面、高效的电脑文档加密解决方案。这有助于保护用户的数据安全,防止未经授权的访问和数据泄露。


本文为收集整理,文章部分观点不代表本站观点,如有侵权或其它问题请反馈客服。/cjwt/16304.html

~article_body_code~