mysql欄位加密儲存過程 資料庫 加密儲存過程

2021-10-18 22:13:25 字數 1235 閱讀 4252

如何簡單的建立乙個加密儲存過程:

create proc test

(引數列表)

with encription

as主體

go為了演示,現在我們建立乙個具備各種引數型別的儲存過程作為測試:

create proc test

@x int = 3,

@s nvarchar(20),

@y int output

with encryption

asselect @x, @s

set @y = 5

return 1

go這個儲存過程具備了輸入引數,輸出引數,返回值。

(關於返回值的題外話:返回值只能是 int 型別或者沒有。預設情況下,系統儲存過程都返回 0 表示呼叫成功,其他非零值表示失敗。使用者自定義的儲存過程可以返回任意整數值)

現在呼叫一下這個儲存過程試試:

declare @y int, @r int

exec @r = test 9, 』hello』, @y output

select @y

select @r

再來看一下這個儲存過程的注釋:

select c.id, c.text

from syscomments c inner join sysobjects o

on c.id = o.id

where o.name = 』test』可以發現是一些加密了之後的亂碼。

如何得到加密儲存過程的引數列表資訊呢?有兩個辦法:

方法a:

select * from information_schema.parameters

where specific_name = 』test』這個方法返回的結果集裡沒有包含返回值的資訊。

方法b:

sp_procedure_params_rowset 』test』, 1, 』dbo』這個語句返回的比上面那個多一行返回值資訊。

注意到他們返回的其他列資訊也不同。比如 procedure_name(儲存過程名),方法b返回的是:

test;1

後面這個 1 表示 group number.

資料庫:加密儲存過程.doc

mysql資料字段加密

password 建立乙個經過加密的密碼字串,適合於插入到mysql的安全系統。該加密過程不可逆,和unix密碼加密過程使用不同的演算法。主要用於mysql的認證系統。encrypt aes decrypt 使用unix crypt 系統加密字串,encrypt 函式接收要加密的字串和 可選的 用於...

MySQL儲存資料加密

建一張測試表 create table users username varchar 128 使用者暱稱 password blob 密碼 engine innodb default charset utf8 插入一條測試語句 insert into users username,password ...

儲存過程加密

返回老師管理下所有學生數 create procedure proc sum student teacher id int sum student int outputas select sum student count id count 是統計函式 from student where teac...