当前位置:首页 » 编程语言 » sql代码加密
扩展阅读
webinf下怎么引入js 2023-08-31 21:54:13
堡垒机怎么打开web 2023-08-31 21:54:11

sql代码加密

发布时间: 2022-05-28 06:30:35

sql数据库怎么加密

SQL Server中的加密简介
在SQL Server2000和以前的版本,是不支持加密的。所有的加密操作都需要在程序中完成。这导致一个问题,数据库中加密的数据仅仅是对某一特定程序有意义,而另外的程序如果没有对应的解密算法,则数据变得毫无意义。

到了SQL Server2005,引入了列级加密。使得加密可以对特定列执行,这个过程涉及4对加密和解密的内置函数

SQL Server 2008时代,则引入的了透明数据加密(TDE),所谓的透明数据加密,就是加密在数据库中进行,但从程序的角度来看就好像没有加密一样,和列级加密不同的是,TDE加密的级别是整个数据库。使用TDE加密的数据库文件或备份在另一个没有证书的实例上是不能附加或恢复的。

㈡ sql server中怎么给数据库表中的用户密码加密

1、首先我们电脑上要安装有SQL Server,然后要准备一个MDF数据库文件。打开SQL Server。

㈢ SQL如何加密

对MSSQL的用户信息有兴趣的,可能会发现master.dbo.sysxlogins里面存放着用户的口令,可是呢,password字段如果不是null就是一堆看不懂的binary,这个口令是怎么加密的呢?
其实只要仔细看看master.dbo.sp_addlogin就知道了,MSSQL的sp都可以看到代码,真是不错。
让我们来看看它是怎么做的,注意这一行select @passwd = pwdencrypt(@passwd),这个时后@passwd就被加密了,让我们也来试一下
DECLARE @ClearPWD varchar(255)
DECLARE @EncryptedPWD varbinary(255)
SELECT @ClearPWD = 'test'
SELECT @EncryptedPWD = CONVERT(varbinary(255), pwdencrypt(@ClearPWD))
SELECT @EncryptedPWD
看上去不错,确实被加密了,可是我怎么还原呢?

呵呵,这就没戏了,口令加密都是单向的,用加密后的密文来比较就可以了。
继续看看其它用户相关的sp,可以发现master.dbo.sp_password里面有口令比较的内容。
pwdcompare(@old, password, (CASE WHEN xstatus&2048 = 2048 THEN 1 ELSE 0 END))
不用去理会xstatus,这是一个状态掩码,一般我们用的时候就直接用0就可以了
DECLARE @ClearPWD varchar(255)
DECLARE @EncryptedPWD varbinary(255)
SELECT @ClearPWD = 'test'
SELECT @EncryptedPWD = CONVERT(varbinary(255), pwdencrypt(@ClearPWD))
SELECT pwdcompare(@ClearPWD, @EncryptedPWD, 0)
SELECT pwdcompare('ErrorPassword', @EncryptedPWD, 0)
这样我们就可以使用这两个函数来加密自己的密码了

㈣ SQL Server数据库如何正确加密

当数据被存储时候被加密,它们被使用的时候就会自动加密。在其他的情况下,你可以选择数据是否要被加密。SQL Server数据库可以加密下列这些组件:密码存储过程,视图,触发器,用户自定义函数,默认值,和规则。
在服务器和用户之间传输的数据密码加密SQL Server自动将你分配给登陆和应用角色的密码加密。尽管当你可以从主数据库中直接察看系统表格而不需要密码。你不能给对这种情况作出任何修改,事实上,你根本不能破坏它。
定义加密在有些时候,如果对对象进行加密是防止将一些信息分享给他人。例如,一个存储进程可能包含所有者的商业信息,但是这个信息不能和让其他的人看到,即使他们公开的系统表格并可以看到对象的定义。这就是为什么SQL Server数据库允许你在创建一个对象的时候进行加密。为了加密一个存储进程,使用下面形式的CREAT PROCEDURE 语句:
CREATEPROCEDUREprocerename[;number]
[@parameterdatatype
[VARYING][=defaultvalue][OUTPUT]]
[,]
[WITHRECOMPILE|ENCRYPTION|RECOMPILE,ENCRYPTION]
我们关心的仅仅是可选的WITH参数。你可以详细说明ARECOMPILE或者ENCRYPTION,或者你可以同时说明它们。ENCRYPTION关键字保护SQL Server数据库它不被公开在进程中。结果,如果ENCRYPTION在激活的时候系统存储进程sp_helptext就会被忽视,这个存储进程将被存储在用户创建进程的文本中。
如果你不想要加密,你可以使用ALTER PROCEDURE,忽略WITH ENCRYPTION子句来重新创建一个进程。
为了能够使用加密。用户和服务器都应该使用TCP/IP NetworkLibraries用来连接。运行适当的Network Utility和检查Force protocol encryption,看下表,用户和服务器之间的连接将不会被加密。
加密也不能完全自由。当连接确定后源码天空
,要继续其他的构造,并且用户和服务器必须运行代码来解释加密和解释的包裹。这里将需要一些开销并且当在编译码的时候会使进程慢下来。

㈤ 教你怎样实现SQL密文加密,不可反编译

use Tempdbgoifobject_ID('fn_ACITEncryption')isnotnull dropfunction fn_ fn_ACITEncryption( @Str nvarchar( 4000),--加密的字符串 @Flag bit= 1,--1、加密0、解密 @Key nvarchar( 50)--密文)returnsnvarchar( 4000)--这里可转换成二进制withEncryptionasbeginDeclare @LenStr int, @i int, @Str2 nvarchar( 4000), @Split nvarchar( 2), @LenKey intselect @Str= @Str+'A', @LenStr=len( @Str), @i= 1, @Str2='', @LenKey=Len( @Key+'A')- 1while @i< @LenStr select @Split=substring( @Str, @i, 1), @Split=nchar((unicode( @Split)+case @Flag when 1 thenunicode(substring( @Key+'A', @i% @LenKey+ 1, 1))- 1 when 0 then 65535-unicode(substring( @Key+'A', @i% @LenKey+ 1, 1)) else 0 end)% 65535+cast( @Flag asint)), @Str2= @Str2+ @Split, @i= @i+ 1return @Str2 endgoselect dbo. fn_ACITEncryption( N'Roy', 1,'123')as加密后字符串 /*加密后字符串------------------------------(1 个资料列受到影响) */select dbo. fn_ACITEncryption( N, 0,'123')as解密后字符串/*解密后字符串--------------------------Roy (1 个资料列受到影响)*/

㈥ SQL数据文件怎么加密

首先要说明不能限制 “谁”,只能限制部分人

其次是加密数据肯定要降低效率

一般情况你数据表中数据不用全部加密,某些关键字段加密就行了

但是你这个只能用可逆转加密,而且加密后 查询检索会麻烦些

不能直接复制,使用 Blob 字段就类型就行了

要加密简单点用 Base64编码好了,也不能直接复制,肉眼看不出来,拿走也不能直接用

其它的加密方式 效果好些,但效率就低了。

㈦ 请问SQL怎么对数据进行加密

--以下代码包括创建密钥,加密,解密和删除密钥
/*
1.利用对称密钥
搭配EncryptByKey进行数据加密
使用DecryptByKey函数进行解密
这种方式比较适合大数据量
*/
='XIAOMA'
='ZXCCERTIFICATE',EXPIRY_DATE='2015/01/01'
CREATESYMMETRICKEYSYM_TOMWITHALGORITHM=
OPENSYMMETRICKEYSYM_
SELECTCONVERT(NVARCHAR(10),Decryptbykey((Encryptbykey(Key_guid('SYM_TOM'),N'TOM3'))))
CLOSESYMMETRICKEYSYM_TOM
DROPSYMMETRICKEYSYM_TOM
DROPCERTIFICATETOMCERT;
DROPMASTERKEY;
--或--
=AES_256ENCRYPTIONBYPASSWORD='ZXC123456'
='ZXC123456'
SELECTCONVERT(VARCHAR(10),Decryptbykey(Encryptbykey(Key_guid('ZXC'),'YHDH_C')))
CLOSESYMMETRICKEYZXC;
DROPSYMMETRICKEYZXC;
/*
2.利用非对称密钥
搭配EncryptByAsymKey进行数据加密
使用DecryptByAsymKey函数进行解密
用于更高安全级别的加解密数据
*/
='XIAOMA'
=RSA_2048ENCRYPTIONBYPASSWORD='ZXC123456'
(DECRYPTIONBYPASSWORD='ZXC123456')
SELECTCONVERT(VARCHAR(100),Decryptbyasymkey(Asymkey_id('ABC'),Encryptbyasymkey(Asymkey_id('ABC'),'ZXC123456')))
DROPASYMMETRICKEYABC;
DROPMASTERKEY
/*
3.利用凭证的方式
搭配EncryptByCert进行加密
DecryptByCert函数进行解密
比较类似非对称密钥
*/
='XIAOMA'
='ZXCCERTIFICATE',EXPIRY_DATE='2015/01/01'
SELECTCONVERT(VARCHAR(20),Decryptbycert(Cert_id('ZXC'),Encryptbycert(Cert_id('ZXC'),'123456')))
DROPCERTIFICATEZXC;
DROPMASTERKEY
--或--
='Mary5',
SECRET='123456';
ALTERLOGINUser1
ADDCREDENTIALAlterEgo
DropCREDENTIALAlterEgo
DROPCREDENTIALAlterEgo
/*
4.利用密码短语方式
搭配EncryptBypassPhrase进行加密
使用DecryptByPassPhrase函数来解密
比较适合一般的数据加解密
*/
SELECTCONVERT(VARCHAR(100),Decryptbypassphrase('xiaoma',Encryptbypassphrase('xiaoma','123456')))

㈧ 如何对Oracle中的PL/SQL源码进行加密

可以使用wrap 工具或者DBMS_DDL子程序对PL/SQL源码进行加密。wrap工具加密单个源文件,如SQL*Plus脚本。DBMS_DDL子程序加密单个动态生成的PL/SQL单元,如一个CREATE PROCEDURE声明。加密的源文件可以移动,备份,可被SQL*Plus和Improt和Export工具处理,但在静态数据字典视图*_SOURCE中无法看到源码。 WRAP语法 wrap iname=input_file [oname=output_file ] 可省略文件扩展名,如以下的命令是等同的: wrap iname=/mydir/myfile wrap iname=/mydir/myfile.sql 输出文件默认的扩展名为.plb,当然你也可以指定不同的文件名和扩展名。 wrap iname=/mydir/myfile oname=/yourdir/yourfile.out wrap主要是混淆PL/SQL语句的主体部分,如下CREATE语句可以被加密: CREATE [OR REPLACE] FUNCTION function_name
CREATE [OR REPLACE] PROCEDURE procere_name
CREATE [OR REPLACE] PACKAGE package_name
CREATE [OR REPLACE] PACKAGE BODY package_name
CREATE [OR REPLACE] TYPE type_name AS OBJECT
CREATE [OR REPLACE] TYPE type_name UNDER type_name
CREATE [OR REPLACE] TYPE BODY type_name CREATE [OR REPLACE] TRIGGER语句不能被加密,但你可调用加密的过程。加密文件中除了语句头部和C风格(/*…*/)注释外,其它所有注释被删除。

㈨ sql代码加密

MD5加密
pl/sql版 CREATE OR REPLACE function md5(input_string VARCHAR2) return varchar2
IS
raw_input RAW(128) := UTL_RAW.CAST_TO_RAW(input_string);
decrypted_raw RAW(2048);
error_in_input_buffer_length EXCEPTION;
BEGIN
sys.dbms_obfuscation_toolkit.MD5(input => raw_input, checksum => decrypted_raw);
return lower(rawtohex(decrypted_raw));
END;from: unknown

Java版 public static String encodePassword(String password, String algorithm)
{
byte[] unencodedPassword = password.getBytes();
MessageDigest md = null;
try
{
md = MessageDigest.getInstance(algorithm);
}
catch (Exception e)
{
return password;
}
md.reset();
md.update(unencodedPassword);
byte[] encodedPassword = md.digest();
StringBuffer buf = new StringBuffer();
for (int i = 0; i < encodedPassword.length; i++)
{
if ((encodedPassword[i] & 0xff) < 0x10)
{
buf.append("0");
}
buf.append(Long.toString(encodedPassword[i] & 0xff, 16));
}
return buf.toString();
}from: appfuse

python版 1import md5
2
3m = md5.new()
4m.update("water")
5print m.hexdigest()

㈩ sql怎么自动备份并将备份文件加密

SQL SERVER 定时自动备份,并将备份文件加密压缩(2008-11-12 11:21:48)标签:it 分类:操作系统@数据库
最近因为公司要升级HR系统,我被安排管理这个项目,公司为了安全起见和我签署了保密协议,按了手印责任就大了,所以要想办法加强系统、应用、数据库的安全,系统无法控制,应用的安全还不错,所以我就着手做数据库的安全,数据库用户及密码都控制了,现在需要对自动备份的数据文件进行加密,以下就是我使用到的工具、方法和代码共享出来,供大家参考。
第一个步骤:就是让SQL Server自动备份数据库,通过DB维护计划完成,这个我就不详细说了。
第二个步骤:就是加密并压缩备份的数据库文件。为了在备份后,马上进行压缩,最方便的就是直接使用SQL命令执行压缩,由于WinRAR可以通过命令行调用,所以我们可以使用SQL Server中的xp_cmdshell命令来执行压缩指令,同时通过其中的一些参数指定压缩密码,这样加密压缩就实现了。(为了实现此功能,服务器上要安装WinRAR)
第三步骤:修改维护计划里调用的SQL,在命令中输入执行备份、加密、删除备份的文件的存储过程。

实施步骤和代码:

1、在备份的数据库中建立存储过程

CREATE procere hrp_backup
--alter procere hrp_backup
WITH ENCRYPTION
AS
declare
@prefix nvarchar(100),
@datefile nvarchar(100),
@bakfile nvarchar(100),
@rarfile nvarchar(100),
@delcmd nvarchar(100),
@rarcmd nvarchar(150)
set @prefix='D:/Database_bak/' --备份文件夹
set @datefile='HRM8_DBBAK_'+cast(Year(GetDate()) as varchar(4))+cast(Month(GetDate()) as varchar(2))+cast(Day(GetDate()) as varchar(2))
set @bakfile=@prefix+@datefile+'.bak'
set @rarfile=@prefix+''+@datefile+'.rar'
BACKUP DataBASE HRM8 TO DISK = @bakfile WITH INIT , NOUNLOAD , NAME = N'HR数据备份', NOSKIP , STATS = 10, NOFORMAT
--set @delcmd = 'del '+@prefix+ 'RAR/*.rar' --先清空RAR备份文件夹
set @rarcmd ='C:/Progra~1/WinRAR/WinRAR.exe a -ppassword -df -ep1 '+@rarfile+' '+@bakfile
-- -df压缩后删除文件 -ep1 从名称中排除基本目录
--将password改为您要设置的密码,进行加密压缩

--exec master..xp_cmdshell @delcmd
exec master..xp_cmdshell @rarcmd

Go
2、新建维护计划,在Transact-SQL命令中执行以上的存储过程。
exec hrp_backup
go

验证调试成功。