能举一个数据库数据加密的例子吗?
1个回答
展开全部
到目前为止,Oracle 提供两种加密方式:
a) 加密 API 例如包 和 dbms_crypto (在 Oracle 数据库 10g 第 1 版和更高版本中)。 使用这些包,我们可以构建我们自己的基础架构,对数据进行加密。 这种方法的灵活性最强,但是构建和管理却相当复杂。
b) 透明的数据加密是 Oracle 数据库 10g 第 2 版和更高版本的一个特性;使用该特性后,我们就不必手动进行密码管理了。 数据库管理密码,但是正如名称所指,加密是透明的——数据仅仅以加密的方式存储而已。 当我们选择了这种方式,扩展性比较差。
对字符型和其他数据类型进行加密要用UTL_RAW..CAST_TO_RAW进行数据类型的转换。实验中采用的DATA_CRYPTO中提供的加密和解密函数已经完成了字符转换,不需要再手动进行转换了。为什么不采用字符类型来存放密文,是因为不同语言版本的Oracle数据库转换后的字符类型不同,当一个数据库中的密文移动到其他语言版本的数据库中将不能解密。所以选择了RAW和BLOB.
下面开始实验:
1) 首先我们在ldd600模式下安装DATA_CRYPTO包和创建一个员工表,它包括两个字段,ename,salary。
SQL> @cry_install.sql
2) 我们将对salary列进行加密,因为员工的工资也属于隐私。
加密之前
进行加密:SQL> update people
2 set salary=data_crypto.encrypt(salary,'sal key');
加密之后,
请问who能看的懂?但是注意我们存放的还是字符型,data_crypto包中的encrypt_char用来把字符型加密为RAW型。但是建表的时要指定salary列的类型为raw。这里就不试了。
我们看看这些数据如果为raw型是什么样子的
1) 查询时我们要对其进行解密,才能解读
SQL> select ename,data_crypto.decrypt(salary,'sal key') salary
2 from people;
对照一下,和加密之前的数据完全相同。
a) 加密 API 例如包 和 dbms_crypto (在 Oracle 数据库 10g 第 1 版和更高版本中)。 使用这些包,我们可以构建我们自己的基础架构,对数据进行加密。 这种方法的灵活性最强,但是构建和管理却相当复杂。
b) 透明的数据加密是 Oracle 数据库 10g 第 2 版和更高版本的一个特性;使用该特性后,我们就不必手动进行密码管理了。 数据库管理密码,但是正如名称所指,加密是透明的——数据仅仅以加密的方式存储而已。 当我们选择了这种方式,扩展性比较差。
对字符型和其他数据类型进行加密要用UTL_RAW..CAST_TO_RAW进行数据类型的转换。实验中采用的DATA_CRYPTO中提供的加密和解密函数已经完成了字符转换,不需要再手动进行转换了。为什么不采用字符类型来存放密文,是因为不同语言版本的Oracle数据库转换后的字符类型不同,当一个数据库中的密文移动到其他语言版本的数据库中将不能解密。所以选择了RAW和BLOB.
下面开始实验:
1) 首先我们在ldd600模式下安装DATA_CRYPTO包和创建一个员工表,它包括两个字段,ename,salary。
SQL> @cry_install.sql
2) 我们将对salary列进行加密,因为员工的工资也属于隐私。
加密之前
进行加密:SQL> update people
2 set salary=data_crypto.encrypt(salary,'sal key');
加密之后,
请问who能看的懂?但是注意我们存放的还是字符型,data_crypto包中的encrypt_char用来把字符型加密为RAW型。但是建表的时要指定salary列的类型为raw。这里就不试了。
我们看看这些数据如果为raw型是什么样子的
1) 查询时我们要对其进行解密,才能解读
SQL> select ename,data_crypto.decrypt(salary,'sal key') salary
2 from people;
对照一下,和加密之前的数据完全相同。
光点科技
2023-08-15 广告
2023-08-15 广告
通常情况下,我们会按照结构模型把系统产生的数据分为三种类型:结构化数据、半结构化数据和非结构化数据。结构化数据,即行数据,是存储在数据库里,可以用二维表结构来逻辑表达实现的数据。最常见的就是数字数据和文本数据,它们可以某种标准格式存在于文件...
点击进入详情页
本回答由光点科技提供
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询