--示例一,使用证书加密数据.
--建立测试数据表
CREATE TABLE tb(ID int IDENTITY(1,1),data varbinary(8000));
GO
--建立证书一,该证书使用数据库主密钥来加密
CREATE CERTIFICATE Cert_Demo1
WITH
SUBJECT=N'cert1 encryption by database master key',
START_DATE='2008-01-01',
EXPIRY_DATE='2008-12-31'
GO
--建立证书二,该证书使用密码来加密
CREATE CERTIFICATE Cert_Demo2
ENCRYPTION BY PASSWORD='liangCK.123'
WITH
SUBJECT=N'cert1 encrption by password',
START_DATE='2008-01-01',
EXPIRY_DATE='2008-12-31'
GO
--此时,两个证书已经建立完,现在可以用这两个证书来对数据加密
--在对表tb做INSERT时,使用ENCRYPTBYCERT加密
INSERT tb(data)
SELECT ENCRYPTBYCERT(CERT_ID(N'Cert_Demo1'),N'这是证书1加密的内容-liangCK'); --使用证书1加密
INSERT tb(data)
SELECT ENCRYPTBYCERT(CERT_ID(N'Cert_Demo2'),N'这是证书2加密的内容-liangCK'); --使用证书2加密
--ok.现在已经对数据加密保证了.现在我们SELECT看看
SELECT * FROM tb ;
--现在对内容进行解密显示.
--解密时,使用DECRYPTBYCERT
SELECT 证书1解密=CONVERT(NVARCHAR(50),DECRYPTBYCERT(CERT_ID(N'Cert_Demo1'),data)),
--使用证书2解密时,要指定DECRYPTBYCERT的第三个参数,
--因为在创建时,指定了ENCRYPTION BY PASSWORD.
--所以这里要通过这个密码来解密.否则解密失败
证书2解密=CONVERT(NVARCHAR(50),DECRYPTBYCERT(CERT_ID(N'Cert_Demo2'),data,N'liangCK.123'))
FROM tb ;
--我们可以看到,因为第2条记录是证书2加密的.所以使用证书1将无法解密.所以返回NULL
/*
证书1解密 证书2解密
-------------------------------------------------- --------------------------------------------------
这是证书1加密的内容-liangCK NULL
NULL 这是证书2加密的内容-liangCK
(2 行受影响)
*/
GO
--删除测试证书与数据表
DROP CERTIFICATE Cert_Demo1;
DROP CERTIFICATE Cert_Demo2;
DROP TABLE tb;
GO
--示例二,使用对称密钥加密数据,
--对称密钥又使用证书来加密.
--创建测试数据表tb
CREATE TABLE tb(ID int IDENTITY(1,1),data varbinary(8000));
GO
--建立证书,该证书用于加密对称密钥.
CREATE CERTIFICATE Cert_Demo
ENCRYPTION BY PASSWORD=N'liangCK.123'
WITH
SUBJECT=N'cert encryption by password',
START_DATE='2008-01-01',
EXPIRY_DATE='2008-12-31'
GO
--建立对称密钥
CREATE SYMMETRIC KEY Sym_Demo
WITH
ALGORITHM=DES --使用DES加密算法
ENCRYPTION BY CERTIFICATE Cert_Demo --使用Cert_Demo证书加密
GO
--要使用Sym_Demo对称密钥.必需使用OPEN SYMMETRIC KEY来打开它
OPEN SYMMETRIC KEY Sym_Demo
DECRYPTION BY CERTIFICATE Cert_Demo
WITH PASSWORD=N'liangCK.123'
--插入加密数据
INSERT tb(data)
SELECT ENCRYPTBYKEY(KEY_GUID(N'Sym_Demo'),N'这是加密的数据,能显示出来吗?')
--关闭密钥
CLOSE SYMMETRIC KEY Sym_Demo
--插入完加密数据,现在使用SELECT来查询一下数据
SELECT * FROM tb
GO
--现在来解密此数据
--同样,还是要先打开对称密钥
OPEN SYMMETRIC KEY Sym_Demo
DECRYPTION BY CERTIFICATE Cert_Demo
WITH PASSWORD=N'liangCK.123'
SELECT CONVERT(NVARCHAR(50),DECRYPTBYKEY(data)) --这里可见,数据已经解密出来了.
FROM tb
CLOSE SYMMETRIC KEY Sym_Demo
GO
--删除测试
DROP SYMMETRIC KEY Sym_Demo
DROP CERTIFICATE Cert_Demo
DROP TABLE tb
--示例三,还有一种方法加密数据更简单
--就是使用EncryptByPassPhrase
--建立测试数据表tb
CREATE TABLE tb(ID int IDENTITY(1,1),data varbinary(8000));
GO
INSERT tb(data)
SELECT EncryptByPassPhrase(N'这是密码,用来加密的',N'这是要加密的内容');
--解密
SELECT CONVERT(NVARCHAR(50),DECRYPTBYPASSPHRASE(N'这是密码,用来加密的',data))
FROM tb
GO
DROP TABLE tb
分享到:
相关推荐
数据加密技术是网络安全的核心...总的来说,数据加密技术是保障电子商务网站和数据库安全的重要工具,涉及多种加密算法和管理策略,需根据实际需求选择合适的加密方法和层次,以确保信息在传输和存储过程中的安全性。
### Tomcat连接池数据库密码加密解密方法详解 在企业级应用中,数据库的安全性尤为重要。其中,数据库连接池作为应用程序与数据库之间的桥梁,扮演着关键角色。然而,当数据库的用户名和密码直接硬编码在配置文件...
文章指出,不妥善处理数据加密可能导致用户名、密码、信用卡信息等关键数据以明文形式暴露,给企业和用户带来严重后果。因此,理解并采用有效的加密策略成为设计数据库系统时的关键步骤。 SQL Server提供了内置的...
本教程将深入探讨如何在Android平台上实现数据加密,包括数据库数据加密和文件加密,以确保信息的安全性。 首先,我们来看一下数据库数据加密。Android通常使用SQLite作为默认的本地数据库,而SQLite的数据通常是...
在数据库安全策略中,数据加密是一种重要的补充手段。传统的安全措施如用户身份验证、访问控制、视图机制等虽然能在一定程度上保障数据安全,但面对高度敏感的信息,它们往往显得力不从心。数据加密技术则能够进一步...
Tomcat 配置文件数据库密码加密,增加factory属性和修改context.xml文件中密码为密文,在lib文件中添加自定义的factory类 代码是jdk1.8版本,包含简单的加密类和http请求,如果使用简单的加密,不需要引用额外的lib...
"sqlite3嵌入式数据库加密"主题正是关注如何在SQLite3数据库中实现数据加密。 在Qt框架下,可以利用SQLite3的API或者QSqlDatabase模块来与SQLite3数据库进行交互。在描述中提到的"qt调用sqlite3加密",意味着源码...
### 几种数据库加密方法的研究与比较 #### 引言 随着信息技术的飞速发展,数据库作为信息系统的核心组成部分,在日常生活及各行各业的应用日益广泛。数据库安全的重要性也随之凸显,尤其是在存储敏感或机密信息的...
常见的加密算法有AES(高级加密标准)、DES(数据加密标准)等。在Android上,我们可以使用这些算法的开源实现,如Bouncy Castle库。 接下来,我们需要创建一个JNI层,它将包含处理加密的逻辑。在C/C++代码中,可以...
通常,这种过程包括两个主要步骤:数据加密和数据解密。在客户端,JavaScript可以用来生成随机密钥,然后使用这个密钥对敏感数据进行加密,再将加密后的数据发送到服务器。服务器接收加密数据后,使用相同的密钥进行...
为了防止未经授权的数据访问和篡改,数据加密技术成为了关键的防护手段之一。然而,现有的加密方法往往会影响到数据库系统的查询性能。为了解决这一问题,近年来研究者们提出了一些能够保持加密数据顺序性的方法,...
本文将深入探讨“加密数据库中数据”的重要性、方法和技术,结合提供的资源,帮助您理解和掌握如何在数据库中实现数据加密。 首先,我们需要理解为什么要在数据库中加密数据。数据加密的主要目的是保护数据的机密性...
数据加密是保护数据库中敏感信息的重要手段。通过实施有效的数据加密策略,我们可以确保数据在存储和传输...本文介绍的多种数据加密方法和最佳实践,可以帮助开发者和数据库管理员优化数据库性能,提高数据管理的效率。
### Spring Boot 整合 Druid 实现数据库密码加密 #### 一、引言 在实际的生产环境中,数据库的安全性非常重要,尤其是...这种方法适用于任何需要保护敏感信息的应用场景,特别是在处理涉及用户隐私的数据时更为关键。
数据加密被视为数据的一个属性,与数据的物理存储方式密切相关,这些功能本应是DBMS的核心组成部分。通过在DBMS内部实施加密,不仅可以减少外部威胁,还可以有效防止数据库管理员(DBA)对数据安全构成的潜在风险。 ...
1. Access数据库加密:Access是一种流行的轻量级数据库管理系统,用于存储和管理数据。默认情况下,Access数据库(.mdb或.accdb)的保护程度相对较低。为了增强安全性,可以对数据库进行加密。Access提供了两种主要的...
GreenDao3是其第三个主要版本,引入了更多的特性和优化,包括对数据库加密的支持,以增强数据安全性。 在“greenDao3数据库加密”这个主题中,我们将深入探讨如何使用GreenDao3实现数据库的加密,并在应用的欢迎...
然而,随着数据安全性的日益重要,对SQLite数据库进行加密是必要的,以保护敏感信息免受未授权访问。本篇文章将深入探讨如何在Android中实现SQLite数据库的加密。 一、SQLite加密的必要性 1. 数据隐私:在移动设备...
总之,Access数据库加密是一种有效保护数据安全的方法,尤其适用于处理敏感信息的组织和个人。正确实施加密并妥善管理密码,可以极大地降低数据泄露的风险。同时,也要注意备份和权限控制,以确保在保障安全的同时,...