1. SQL Server 2008 r2資料庫下面新建一個標量值函數,然後怎麼給新建好的函數加密
當然,加密的存儲過程,函數是不可以直接訪問修改的
兩種方式
1、由編寫者提供sql函數源碼,這樣你是可以修改的
2、網上找解密的三方工具,我忘記叫什麼了,很久沒用了
2. MySQL函數的加密函數
a) 函數 AES_ENCRYPT(str ,key_str ) , AES_DECRYPT(crypt_str ,key_str )
函數使用說明:這些函數允許使用官方 AES 進行加密和數據加密 ( 高級加密標准 ) 演算法 , 即以前人們所熟知的 「Rijndael」 。 保密關鍵字的長度為 128 比特,不過你可以通過改變源而將其延長到 256 比特。我們選擇了 128 比特的原因是它的速度要快得多,且對於大多數用途而言這個保密程度已經夠用。
b) 函數DECODE(crypt_str ,pass_str )
函數使用說明:使用 pass_str 作為密碼,解密加密字元串 crypt_str , crypt_str 應該是由 ENCODE() 返回的字元串。
c) 函數 ENCODE(str ,pass_str )
函數使用說明:使用 pass_str 作為密碼,解密 str 。 使用 DECODE() 解密結果。
d) 函數 DES_DECRYPT(crypt_str [,key_str ])
函數使用說明:使用 DES_ENCRYPT() 加密一個字元串。若出現錯誤,這個函數會返回 NULL 。
e) 函數 DES_ENCRYPT(str [,(key_num |key_str )])
函數使用說明:用 Triple-DES 演算法給出的關鍵字加密字元串。若出現錯誤,這個函數會返回 NULL 。
f) 函數 ENCRYPT(str [,salt ])
函數使用說明:使用 Unix crypt() 系統調用加密 str 。 salt 參數應為一個至少包含 2 個字元的字元串。若沒有給出 salt 參數,則使用任意值。
g) 函數 MD5(str )
函數使用說明:為字元串算出一個 MD5 128 比特檢查和。該值以 32 位十六進制數字的二進制字元串的形式返回 , 若參數為 NULL 則會返回 NULL 。例如,返回值可被用作散列關鍵字
h) 函數 OLD_PASSWORD(str )
函數使用說明:當 PASSWORD() 的執行變為改善安全性時, OLD_PASSWORD() 會被添加到 MySQL 。 OLD_PASSWORD() 返回從前的 PASSWORD() 執行值 ( 4.1 之前 ) ,同時允許你為任何 4.1 之前的需要連接到你的 5.1 版本 MySQL 伺服器前客戶端設置密碼,從而不至於將它們切斷
i) 函數PASSWORD(str )
函數使用說明:從原文密碼str 計算並返回密碼字元串,當參數為 NULL 時返回 NULL 。這個函數用於用戶授權表的Password 列中的加密MySQL 密碼存儲
3. 現有一函數加密演算法,其演算法加密過程如下 急求答案
加密函數(3*Y+2)mod 10=Z
A 是65,計算後是 197mod10=7
B 是200mod10=0
C 是203mod10=3
D 是206mod10=6
E 是209mod10=9
F 是212mod10=2
G 是215mod10=5
H 是218mod10=8
I 是221mod10=1
J 是224mod10=4
所以 0~9 的明文分別是
BIFCJGDAHE
所以62590 對應明文為 DIGEB
4. 破解一個加密函數的方法
樓主這個問題涉及到的是逆向工程, 已經不是程序語言的問題了.
第一句是取地址, 第二句是修改內存頁的讀寫, 因為在內存中, 代碼區是只讀的, 這里改成可讀可寫. 第三句是將函數的第一句改成E9, 其實這里的E9對應的是匯編里的JMP, 配合第四句修改第二個位元組的內容, 聯合起來的效果就是該函數入口處的第一句成了JMP dididi(相對地址), 當調用這個函數時, 就會跳轉到自己寫的函數dididi里了.
這里有一個前提, dididi的函數定義(參數個數, 參數類型, 返回值類型)必須與函數Encrypt的完全一致.
你用VB取得首地址後修改失敗是因為第三句*p的意思是修改p指針指向的位元組的內容, 而VB中沒有指針類型, 正確的做法應該是使用memset或者memcpy這兩個API來對內存中的數據進行操作, 從而迴避VB內沒有指針的問題.
不知道上面說的這些你有沒有看懂, 不過樓主想找一個懂VB, C++ 和 匯編的, 上網路知道的人來回答你的問題, 估計很困難.....
5. 用C語言編寫一個與此加密函數對應的解密函數
樓主這個加密演算法對不同的char a會加密出來的數據不是唯一的,是有可能相同的,這種加密演算法沒有辦法解密的。
比如char a = 3,加密出來char b = 8;char a = 4,加密出來char b = 8
如果給一個加密後的char b = 8的話,這個是不可能解密出來對應的數據的。
加密演算法要對不同的數據加密出來的數據也要是不同的。
6. 編寫一個加密函數對一個字元串加密,函數原型為:
char*entropy(char*s)
{
if(s==0)
return0;
char*p=(char*)malloc(strlen(s)+1);
memset(p,0,strlen(s)+1);
char*temp=s;
char*temp2=p;
while(*temp!='