SQLServer中数据加密方法
合集下载
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
第三种方法,在我的上一篇文章《在中调用外部扩展存储过程》里,已描述了怎样编写扩展存储过程文件和怎样注册扩展存储过程,我提供了一个完整的加密文件,可注册到中调用,也可注册为库,还可在语言中直接调用声明的函数,由于在文章中没有上传文件的功能,因此,我先把此文件上传到“我的资源”中,有兴趣者可下载。
说明:本文不讨论哪种方法好和坏,在于列举出后二种方法,供大家参考,只有实用的才是最好的。
{******************************************************************************}
{ : }
{ : }
{ : . }
{ :杨连山, }
{ : }
{ :杨连山}
{ }
{ : ( )开放数据服务接口单元文件,转换自下的}
{头文件. }
;
;
;
: ;1/1/1900
: ;
;
;
: ;
: ;
: ;
: [ ] ;
;
;
($1f);
($);
($);
($);
($);
($);
($);
($);
($2f);
($);
($);
($);
($);
($);
($3a);
($);
($3c);
($);
($);
($3f);
($);
($);
($6a);
($6c);
($);
中数据加密方法
对中的数据进行加密,有三种方法,
、在程序语言中先对数据进行加密后再把加密后的数据保存在数据库中;
、利用未公开的加密密码函数,在代码中调用加密密码函数对数据进行加密后保存;
、编写扩展存储过程的外部文件实现加密,然后由代码调用加密功能实现数据加密。
第一种方法就不再描述,利用第二种方法加密数据代码示例:
(: ; : ; : ;
: ; , , , : ; : ): ; ;
(: ; : ; : ): ; ;
(: ; : ; : ): ; ;
(: ; , : ): ; ;
(: ): ; ;
(: ; , : ; : ): ; ;
(: ): ; ;
(: ; : ; : ;
, : ; : ; : ): ; ;
(: ): ; ;
(: ): ; ;
(: ): ; ;
(, : ; : ): ; ;
(: ; : ): ; ;
(: ): ; ;
(: ; : ; : ;
{ }
{******************************************************************************}
;
{$ }
{$ }
{$ }
{$ }
{$}
;
()
{$ }
{$ }
;
;
;
;
;
;
;
^;
;
(, );
;
: ;1/1/1900
: ;
;
: ;
: ;
;
;
;
;
;
;
:
($);
($);
($);
($);
($);
$;
$;
$;
$;
;
;
;
;
;
;
;
;ቤተ መጻሕፍቲ ባይዱ
;
;
;
;
;
;
;
;
;
;
;
;
;
;
;
;
;
;
;
;
;
;
;
;
;
;
;
;
^;
...
;
^;
: ;
...
;
^;
: ; , ,
...
;
^;
(: ): ; ;
(: ; : ; : ;
, : ; : ; : ; : ;
: ; : ): ; ;
{ }
{ :转换者:杨连山}
{、您可以免费使用和分发本单元文件,但不能作为商业应用之全部或部分.}
{、在使用中如造成任何损失,本转换者概不负责. }
{、转换者不保证本单元转换全部正确,如您发现或修正后,有义务反馈}
{最新版给转换者.发到}
{、请保留以上说明信息}
{ }
{ :2005-06-22杨连山转换}
、扩展存储过程的引入
首先,我们需要知道在(以上版本)中有一个扩展存储过程,名叫,这是干什么用的呢,查它的帮助呀,不就知道了,在的帮助中是这样描述的:向注册新扩展存储过程的名称。语法为:[] '' , [] ''。由此我们知道,它的功能是把已经写好在外部文件中的函数引入到中,提供给其它代码调用。其用法示例为:
(: ; : ; : ;
: ; : ): ; ;
(: ; : ): ; ;
(: ; : ): ; ;
(: ; : ): ; ;
(: ; : ): ; ;
(: ; : ; : ; : ): ; ;
(: ; : ; : ): ; ;
(: ; : ; : ): ; ;
, ,
(: ): ; ;
(: ): ; ;
(* )
{
(, , , , ,
, , () ,
": < >",
);
(, ( ), , );
}
功能:这个示例显示怎样调用的输出字符串。上面的示例是在环境下开发的示例,实际上,只要遵守调用约定,用什么语言都可以实现,由于本人对比对熟悉,我在这里重点讲解在下的编写过程。
在下开发,需要把下的头文件翻译为单元文件,便于调用,经过本人努力,已经翻译为单元文件,内容如下:
($);
($6f);
($7a);
($);
($);
($);
($);
($);
($);
:
;
;
;
;
;
;
;
;
;
;
;
;
;
;
;
;
;
;
;
;
;
;
;
;
;
;
;
;
;
;
;
;
;
;
注:为了不与其它名字冲突,在下面原常量前加了
;
;
;
;
;
;
;
;
: ,
;
;
;
;
;
;
;
;
;
;
;
;
;
;
;
;
;
; .
;
;
;
;
;
;
;
;
;
;
;
;
;
;
;
;
;
;
;
;
;
;
( , () )
(, (''))
(, (''))
(, (''))
*
比较数据是否相等
*
('', )
上面的语句中,用到了二个函数:和,这是二个未公开的函数,实现对输入数据进行加密后返回二进制形式的加密内容,而用于检查明文是否与加密的二进制数据内容相等,没有解密函数。这二个函数主要是用于内部自己调用。优点是调用方便,缺点是这二个函数没有公开,就意味着可能改变,并且不兼容原来的,在使用上存在风险。
'', ':\'
上面的语句表示把外部文件:\中的函数引入到中,在执行完上面的语句后,主库中就多了一个名为的扩展存储过程,我们在其它脚本中就可以调用此扩展存储过程了。有一点限定的是,只能在中执行,如果在其它库中调用,需要加上限定库名。
、编写外部文件
好了,我们知道了怎样在中加载外部扩展存储过程,接下来,我们要做什么呢,对了,在外部中怎样编写符合调用的函数。在以上版本中,我们在安装的目录下能找到一个头文件,名叫,它主要是提供给编程人员编写扩展存储过程用的,人们称它为( )开放数据服务接口头文件,里面为众多的常量、结构体、以及从文件中导入的众多函数。因此,我们在编写自己的文件时,需要包含此头文件,然后编写符合扩展存储过程要求的、声明导出方式为约定(由调用者清除堆栈)的函数。编写示例:
说明:本文不讨论哪种方法好和坏,在于列举出后二种方法,供大家参考,只有实用的才是最好的。
{******************************************************************************}
{ : }
{ : }
{ : . }
{ :杨连山, }
{ : }
{ :杨连山}
{ }
{ : ( )开放数据服务接口单元文件,转换自下的}
{头文件. }
;
;
;
: ;1/1/1900
: ;
;
;
: ;
: ;
: ;
: [ ] ;
;
;
($1f);
($);
($);
($);
($);
($);
($);
($);
($2f);
($);
($);
($);
($);
($);
($3a);
($);
($3c);
($);
($);
($3f);
($);
($);
($6a);
($6c);
($);
中数据加密方法
对中的数据进行加密,有三种方法,
、在程序语言中先对数据进行加密后再把加密后的数据保存在数据库中;
、利用未公开的加密密码函数,在代码中调用加密密码函数对数据进行加密后保存;
、编写扩展存储过程的外部文件实现加密,然后由代码调用加密功能实现数据加密。
第一种方法就不再描述,利用第二种方法加密数据代码示例:
(: ; : ; : ;
: ; , , , : ; : ): ; ;
(: ; : ; : ): ; ;
(: ; : ; : ): ; ;
(: ; , : ): ; ;
(: ): ; ;
(: ; , : ; : ): ; ;
(: ): ; ;
(: ; : ; : ;
, : ; : ; : ): ; ;
(: ): ; ;
(: ): ; ;
(: ): ; ;
(, : ; : ): ; ;
(: ; : ): ; ;
(: ): ; ;
(: ; : ; : ;
{ }
{******************************************************************************}
;
{$ }
{$ }
{$ }
{$ }
{$}
;
()
{$ }
{$ }
;
;
;
;
;
;
;
^;
;
(, );
;
: ;1/1/1900
: ;
;
: ;
: ;
;
;
;
;
;
;
:
($);
($);
($);
($);
($);
$;
$;
$;
$;
;
;
;
;
;
;
;
;ቤተ መጻሕፍቲ ባይዱ
;
;
;
;
;
;
;
;
;
;
;
;
;
;
;
;
;
;
;
;
;
;
;
;
;
;
;
;
^;
...
;
^;
: ;
...
;
^;
: ; , ,
...
;
^;
(: ): ; ;
(: ; : ; : ;
, : ; : ; : ; : ;
: ; : ): ; ;
{ }
{ :转换者:杨连山}
{、您可以免费使用和分发本单元文件,但不能作为商业应用之全部或部分.}
{、在使用中如造成任何损失,本转换者概不负责. }
{、转换者不保证本单元转换全部正确,如您发现或修正后,有义务反馈}
{最新版给转换者.发到}
{、请保留以上说明信息}
{ }
{ :2005-06-22杨连山转换}
、扩展存储过程的引入
首先,我们需要知道在(以上版本)中有一个扩展存储过程,名叫,这是干什么用的呢,查它的帮助呀,不就知道了,在的帮助中是这样描述的:向注册新扩展存储过程的名称。语法为:[] '' , [] ''。由此我们知道,它的功能是把已经写好在外部文件中的函数引入到中,提供给其它代码调用。其用法示例为:
(: ; : ; : ;
: ; : ): ; ;
(: ; : ): ; ;
(: ; : ): ; ;
(: ; : ): ; ;
(: ; : ): ; ;
(: ; : ; : ; : ): ; ;
(: ; : ; : ): ; ;
(: ; : ; : ): ; ;
, ,
(: ): ; ;
(: ): ; ;
(* )
{
(, , , , ,
, , () ,
": < >",
);
(, ( ), , );
}
功能:这个示例显示怎样调用的输出字符串。上面的示例是在环境下开发的示例,实际上,只要遵守调用约定,用什么语言都可以实现,由于本人对比对熟悉,我在这里重点讲解在下的编写过程。
在下开发,需要把下的头文件翻译为单元文件,便于调用,经过本人努力,已经翻译为单元文件,内容如下:
($);
($6f);
($7a);
($);
($);
($);
($);
($);
($);
:
;
;
;
;
;
;
;
;
;
;
;
;
;
;
;
;
;
;
;
;
;
;
;
;
;
;
;
;
;
;
;
;
;
;
注:为了不与其它名字冲突,在下面原常量前加了
;
;
;
;
;
;
;
;
: ,
;
;
;
;
;
;
;
;
;
;
;
;
;
;
;
;
;
; .
;
;
;
;
;
;
;
;
;
;
;
;
;
;
;
;
;
;
;
;
;
;
( , () )
(, (''))
(, (''))
(, (''))
*
比较数据是否相等
*
('', )
上面的语句中,用到了二个函数:和,这是二个未公开的函数,实现对输入数据进行加密后返回二进制形式的加密内容,而用于检查明文是否与加密的二进制数据内容相等,没有解密函数。这二个函数主要是用于内部自己调用。优点是调用方便,缺点是这二个函数没有公开,就意味着可能改变,并且不兼容原来的,在使用上存在风险。
'', ':\'
上面的语句表示把外部文件:\中的函数引入到中,在执行完上面的语句后,主库中就多了一个名为的扩展存储过程,我们在其它脚本中就可以调用此扩展存储过程了。有一点限定的是,只能在中执行,如果在其它库中调用,需要加上限定库名。
、编写外部文件
好了,我们知道了怎样在中加载外部扩展存储过程,接下来,我们要做什么呢,对了,在外部中怎样编写符合调用的函数。在以上版本中,我们在安装的目录下能找到一个头文件,名叫,它主要是提供给编程人员编写扩展存储过程用的,人们称它为( )开放数据服务接口头文件,里面为众多的常量、结构体、以及从文件中导入的众多函数。因此,我们在编写自己的文件时,需要包含此头文件,然后编写符合扩展存储过程要求的、声明导出方式为约定(由调用者清除堆栈)的函数。编写示例: