没有找到合适的产品?
联系客服协助选型:023-68661681
提供3000多款全球软件/控件产品
针对软件研发的各个阶段提供专业培训与技术咨询
根据客户需求提供定制化的软件开发服务
全球知名设计软件,显著提升设计质量
打造以经营为中心,实现生产过程透明化管理
帮助企业合理产能分配,提高资源利用率
快速打造数字化生产线,实现全流程追溯
生产过程精准追溯,满足企业合规要求
以六西格玛为理论基础,实现产品质量全数字化管理
通过大屏电子看板,实现车间透明化管理
对设备进行全生命周期管理,提高设备综合利用率
实现设备数据的实时采集与监控
利用数字化技术提升油气勘探的效率和成功率
钻井计划优化、实时监控和风险评估
提供业务洞察与决策支持实现数据驱动决策
翻译|使用教程|编辑:李爽夏|2019-02-11 10:21:17.000|阅读 440 次
概述:本篇文章介绍了UniDAC中的数据加密。
# 界面/图表报表/文档/IDE等千款热门软控件火热销售中 >>
相关链接:
Universal Data Access Components (UniDAC)是一款通用数据库访问组件,提供了多个数据库的直接访问,如针对Windows的Delphi, C++Builder, Lazarus (以及 Free Pascal) , Mac OS X, iOS, Android, Linux和64和32位的FreeBSD等等。我们将长期的经验集于这个小组件,提供统一的数据库连接访问(如oracle、微软SQL等等)。这意味着您可以在您的项目之间轻松地切换不同的数据库,以及创建跨数据库应用程序接口。
UniDAC拥有内置的数据加密和解密算法。要启用加密,应将TCREncryptor组件附加到数据集,并指定加密字段。在表中插入或更新数据时,将按照指定的方法在客户端加密信息。同样,当从服务器读取数据时,组件会“即时”解密这些字段中的数据。
对于加密,您应该指定数据加密算法(EncryptionAlgorithm属性)和密码(Password属性)。根据指定的密码生成密钥,对数据进行加密。也可以使用SetKey方法直接设置密钥。
存储加密数据时,除了初始数据外,还可以存储其他信息:GUID和散列。(方法在TCREncryptor.DataHeader属性中指定)。
如果数据存储时没有附加信息,则无法确定数据是否加密。在这种情况下,只应将加密的数据存储在列中,否则,由于无法区分数据的性质,会出现混淆。同样,从信息保护的角度来看,类似的源数据将以加密的形式等价,这是不好的。这种方法的优点是初始数据的大小等于加密数据的大小。
为了避免这些问题,建议与数据一起存储适当的GUID,这对于指定记录中的值是加密的,并且在读取数据时必须对其进行解密是必需的。这允许您避免混淆并将加密和解密的数据保存在同一列中,这在使用现有表时尤为重要。同样,这样做时,在数据加密之前会生成一个随机初始化向量,用于加密。这允许您接收相同初始数据的不同结果,从而显著提高了安全性。
最可取的方法是存储哈希数据以及GUID和加密信息,以确定数据的有效性并验证其完整性。这样,如果在传输或数据存储的任何阶段试图伪造数据,在解密数据时,都会产生相应的错误。为了计算散列,可以使用SHA1或MD5算法(HashAlgorithm属性)。
后两种方法的缺点是存储辅助信息需要额外的内存。
由于加密算法使用一定大小的缓冲区,并且在存储附加信息时,需要使用附加内存,因此TCREncryptor仅支持对字符串或二进制字段(ftString、ftWideString、ftBytes、ftvarBytes、ftBlob、ftMemo、ftWideMemo)进行加密。如果使用字符串字段加密,首先对数据进行加密,然后将获得的二进制数据转换为十六进制格式。在这种情况下,数据存储需要两倍的空间(一个字节=2个十六进制字符)。
因此,为了能够加密其他数据类型(如日期、数字等),需要在表中创建二进制或blob类型的字段,然后在数据映射的帮助下将其转换为客户机端的所需类型。
需要注意的是,在服务器端不可能通过加密字段进行搜索和排序。只有在使用Locate和LocaTex方法对数据进行解密之后,才能在客户端上对这些字段执行数据搜索。排序是通过设置TMemDataSet.IndexFieldNames属性来执行的。
例如:
例如,表中存储了一个企业的员工列表,其中包含以下数据:全名、雇用日期、工资和照片。我们希望所有这些数据都以加密形式存储。编写用于创建表的脚本:
CREATE TABLE EMP ( EMPNO varbinary IDENTITY (1,1) NOT NULL PRIMARY KEY, ENAME varbinary (2000), HIREDATE varbinary (200), SAL varbinary (200), FOTO VARBINARY);
如我们所见,文本信息、日期和浮点数的存储字段是用VARBINARY类型创建的。这是为了能够存储加密的信息,而在文本字段的情况下——为了提高性能。编写代码在客户机上处理这些信息。
UniQuery.SQL.Text : = 'SELECT * FROM EMP'; UniQuery.Encryption.Encryptor : = UniEncryptor; UniQuery.Encryption.Fields : = 'ENAME, HIREDATE, SAL, FOTO'; UniEncryptor.Password : = '11111'; UniQuery.DataTypeMap.AddFieldNameRule ('ENAME', ftString); UniQuery.DataTypeMap.AddFieldNameRule ('HIREDATE', ftDateTime); UniQuery.DataTypeMap.AddFieldNameRule ('SAL', ftFloat); UniQuery.Open;
购买UniDAC正版授权,请点击“咨询在线客服”哟!
本站文章除注明转载外,均为本站原创或翻译。欢迎任何形式的转载,但请务必注明出处、不得修改原文相关链接,如果存在内容上的异议请邮件反馈至chenjj@evget.com
在许多企业应用程序中,从 Visio 文件读取形状数据是一项常见需求,因为这些应用程序中的图表都包含有意义的元数据。本教程将借助Aspose.Diagram,以清晰实用的方式指导您使用 C# 读取形状数据。
PDF 的页面大小决定了其内容的显示、打印或处理方式。在准备打印、转换格式或标准化布局时,我们通常需要更改PDF文档的纸张大小。在本教程中,您将学习如何使用 Java 编辑任何 PDF 文件的页面大小。我们将通过完整的代码示例,逐步指导您完成操作。
本文主要介绍如何使用DevExpress WPF Grid控件中的节点(Nodes)概述,欢迎下载最新版组件体验!
本教程提供DevExpress WinFormsWinExplorer视图的基本信息,欢迎下载最新版组件体验!
服务电话
重庆/ 023-68661681
华东/ 13452821722
华南/ 18100878085
华北/ 17347785263
客户支持
技术支持咨询服务
服务热线:400-700-1020
邮箱:sales@evget.com
关注我们
地址 : 重庆市九龙坡区火炬大道69号6幢
慧都科技 版权所有 Copyright 2003-
2025 渝ICP备12000582号-13 渝公网安备
50010702500608号