`
刘宗才
  • 浏览: 33938 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

数据库数据加密的三种方法

 
阅读更多
--示例一,使用证书加密数据.

--建立测试数据表
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_连接池数据库密码加密解密方法

    ### Tomcat连接池数据库密码加密解密方法详解 在企业级应用中,数据库的安全性尤为重要。其中,数据库连接池作为应用程序与数据库之间的桥梁,扮演着关键角色。然而,当数据库的用户名和密码直接硬编码在配置文件...

    SQL Server 数据库中加密数据须知

    文章指出,不妥善处理数据加密可能导致用户名、密码、信用卡信息等关键数据以明文形式暴露,给企业和用户带来严重后果。因此,理解并采用有效的加密策略成为设计数据库系统时的关键步骤。 SQL Server提供了内置的...

    android 数据加密_数据库数据加密_文件加密

    本教程将深入探讨如何在Android平台上实现数据加密,包括数据库数据加密和文件加密,以确保信息的安全性。 首先,我们来看一下数据库数据加密。Android通常使用SQLite作为默认的本地数据库,而SQLite的数据通常是...

    基于oracle数据库的敏感数据加密应用研究.pdf

    在数据库安全策略中,数据加密是一种重要的补充手段。传统的安全措施如用户身份验证、访问控制、视图机制等虽然能在一定程度上保障数据安全,但面对高度敏感的信息,它们往往显得力不从心。数据加密技术则能够进一步...

    Tomcat 配置文件数据库密码加密

    Tomcat 配置文件数据库密码加密,增加factory属性和修改context.xml文件中密码为密文,在lib文件中添加自定义的factory类 代码是jdk1.8版本,包含简单的加密类和http请求,如果使用简单的加密,不需要引用额外的lib...

    sqlite3嵌入式数据库加密

    "sqlite3嵌入式数据库加密"主题正是关注如何在SQLite3数据库中实现数据加密。 在Qt框架下,可以利用SQLite3的API或者QSqlDatabase模块来与SQLite3数据库进行交互。在描述中提到的"qt调用sqlite3加密",意味着源码...

    几种数据库加密方法的研究与比较

    ### 几种数据库加密方法的研究与比较 #### 引言 随着信息技术的飞速发展,数据库作为信息系统的核心组成部分,在日常生活及各行各业的应用日益广泛。数据库安全的重要性也随之凸显,尤其是在存储敏感或机密信息的...

    android数据库文件加密

    常见的加密算法有AES(高级加密标准)、DES(数据加密标准)等。在Android上,我们可以使用这些算法的开源实现,如Bouncy Castle库。 接下来,我们需要创建一个JNI层,它将包含处理加密的逻辑。在C/C++代码中,可以...

    利用javascript函数对网站数据库进行加密的方法

    通常,这种过程包括两个主要步骤:数据加密和数据解密。在客户端,JavaScript可以用来生成随机密钥,然后使用这个密钥对敏感数据进行加密,再将加密后的数据发送到服务器。服务器接收加密数据后,使用相同的密钥进行...

    关系数据库中字符数据的保序加密方法.pdf

    为了防止未经授权的数据访问和篡改,数据加密技术成为了关键的防护手段之一。然而,现有的加密方法往往会影响到数据库系统的查询性能。为了解决这一问题,近年来研究者们提出了一些能够保持加密数据顺序性的方法,...

    加密数据库中数据(带视频)

    本文将深入探讨“加密数据库中数据”的重要性、方法和技术,结合提供的资源,帮助您理解和掌握如何在数据库中实现数据加密。 首先,我们需要理解为什么要在数据库中加密数据。数据加密的主要目的是保护数据的机密性...

    数据库数据加密策略:实现方法与代码实践

    数据加密是保护数据库中敏感信息的重要手段。通过实施有效的数据加密策略,我们可以确保数据在存储和传输...本文介绍的多种数据加密方法和最佳实践,可以帮助开发者和数据库管理员优化数据库性能,提高数据管理的效率。

    SpringBoot(七)SpringBoot整合Druid实现数据库密码加密.pdf

    ### Spring Boot 整合 Druid 实现数据库密码加密 #### 一、引言 在实际的生产环境中,数据库的安全性非常重要,尤其是...这种方法适用于任何需要保护敏感信息的应用场景,特别是在处理涉及用户隐私的数据时更为关键。

    各层次数据库加密综述

    数据加密被视为数据的一个属性,与数据的物理存储方式密切相关,这些功能本应是DBMS的核心组成部分。通过在DBMS内部实施加密,不仅可以减少外部威胁,还可以有效防止数据库管理员(DBA)对数据安全构成的潜在风险。 ...

    access数据库加密+c#,程序中数据库加密,防被盗用数据

    1. Access数据库加密:Access是一种流行的轻量级数据库管理系统,用于存储和管理数据。默认情况下,Access数据库(.mdb或.accdb)的保护程度相对较低。为了增强安全性,可以对数据库进行加密。Access提供了两种主要的...

    greenDao3数据库加密

    GreenDao3是其第三个主要版本,引入了更多的特性和优化,包括对数据库加密的支持,以增强数据安全性。 在“greenDao3数据库加密”这个主题中,我们将深入探讨如何使用GreenDao3实现数据库的加密,并在应用的欢迎...

    android 的sqlite数据库加密实现

    然而,随着数据安全性的日益重要,对SQLite数据库进行加密是必要的,以保护敏感信息免受未授权访问。本篇文章将深入探讨如何在Android中实现SQLite数据库的加密。 一、SQLite加密的必要性 1. 数据隐私:在移动设备...

    如何加密ACCESS数据库

    总之,Access数据库加密是一种有效保护数据安全的方法,尤其适用于处理敏感信息的组织和个人。正确实施加密并妥善管理密码,可以极大地降低数据泄露的风险。同时,也要注意备份和权限控制,以确保在保障安全的同时,...

Global site tag (gtag.js) - Google Analytics