sql存儲過程md5加密
對SQL加密?
SQL
SERVER
有自己的一套安全系統驗證,它做的已經很好了
一般我們對SQL的加密都是對裡面數據內容的加密,而常用的是密碼的加密
現在常用的加密是MD5,把用戶的密碼加密後,保存到SQL資料庫
還有一種是對分布式SQL的加密,就ASP.NET
2.0而言,可以在web.config文件里的SQL網路鏈接字元進行加密,以保證SQL
server的安全性
如有其他問題請提出,很高興為你解答
② MD5如何對sql加密
MD5的典型應用是對一段信息(Message)產生信息摘要(Message-Digest),以防止被篡改。比如,在UNIX下有很多軟體在下載的時候都有一個文件名相同,文件擴展名為.md5的文件,在這個文件中通常只有一行文本,大致結構如:
MD5 (tanajiya.tar.gz) =
這就是tanajiya.tar.gz文件的數字簽名。MD5將整個文件當作一個大文本信息,通過其不可逆的字元串變換演算法,產生了這個唯一的MD5信息摘要。如果在以後傳播這個文件的過程中,無論文件的內容發生了任何形式的改變(包括人為修改或者下載過程中線路不穩定引起的傳輸錯誤等),只要你對這個文件重新計算MD5時就會發現信息摘要不相同,由此可以確定你得到的只是一個不正確的文件。如果再有一個第三方的認證機構,用MD5還可以防止文件作者的 "抵賴",這就是所謂的數字簽名應用。
MD5還廣泛用於加密和解密技術上。比如在UNIX系統中用戶的密碼就是以MD5(或其它類似的演算法)經加密後存儲在文件系統中。當用戶登錄的時候,系統把用戶輸入的密碼計算成MD5值,然後再去和保存在文件系統中的MD5值進行比較,進而確定輸入的密碼是否正確。通過這樣的步驟,系統在並不知道用戶密碼的明碼的情況下就可以確定用戶登錄系統的合法性。這不但可以避免用戶的密碼被具有系統管理員許可權的用戶知道,而且還在一定程度上增加了密碼被破解的難度。
正是因為這個原因,現在被黑客使用最多的一種破譯密碼的方法就是一種被稱為"跑字典"的方法。有兩種方法得到字典,一種是日常搜集的用做密碼的字元串表,另一種是用排列組合方法生成的,先用MD5程序計算出這些字典項的MD5 值,然後再用目標的MD5值在這個字典中檢索。我們假設密碼的最大長度為8位位元組(8 Bytes),同時密碼只能是字母和數字,共26+26+10=62個字元,排列組合出的字典的項數則是P(62,1)+P(62,2)….+P (62,8),那也已經是一個很天文的數字了,存儲這個字典就需要TB級的磁碟陣列,而且這種方法還有一個前提,就是能獲得目標賬戶的密碼MD5值的情況下才可以。這種加密技術被廣泛的應用於UNIX系統中,這也是為什麼UNIX系統比一般操作系統更為堅固一個重要原因。
③ SQL用添加語句怎麼不能用MD5加密
對啊,sql語言內部沒有MD5函數!所以MD5函數不是內部函數!
④ 用MD5加密後,怎麼找回密碼
有時,在開發過程中,如果不小心更改掉了項目管理員帳號的密碼而又忘了,存在資料庫里的密碼又是MD5加密後的,這時候怎麼辦?最為菜鳥的我,剛開始也很迷茫,不過向前輩們請教了請教,自己也查了查資料,特意整理記錄一下,並分享給大家。 前提是你知道這個密碼存在在哪個表的哪個欄位,只不過是加密了,如果是oracle資料庫的話,可以用DBMS_OBFUSCATION_TOOLKIT.MD5 ( input => utl_raw.cast_to_raw('預置密碼'))來得到一個MD5加密後的密碼, 所以我們可以在UPDATE user set password=DBMS_OBFUSCATION_TOOLKIT.MD5 ( input => utl_raw.cast_to_raw('預置密碼')) where name='sys'來重新把不知道的密碼用預置密碼替換掉,這樣我們就可用忘記密碼的帳號重新登錄了,如果是MySQL的話,好像有個內置MD5()函數,也可以起到這樣的效果,具體的大家可以查查詳細MySQL中MD5的用法,如果是SQL Server的話,好像也有對應的MD5家嗎函數,記不太清了,應該是HashByte('加密方式', '待加密的值'),也可以通過這種方式找回的。 DBMS_OBFUSCATION_TOOLKIT.MD5是oracle提供的獲得md5值的函數,可以直接使用DBMS_OBFUSCATION_TOOLKIT.MD5 ( input => utl_raw.cast_to_raw('預置密碼'))a FROM DUAL來得到加密後的數據,否則得到的是raw類型的數據,需要用utl_raw.cast_to_raw轉換成我們常用的md5格式,還有以上得到的md5值都是大寫,如果資料庫中存儲的是小寫,需要再用lower函數轉換一下。 我們還可以使用存儲過程來實現MD5加密: declare v_string varchar2(50); v_n number; begin v_string := utl_raw.cast_to_raw(sys.dbms_obfuscation_toolkit.md5(input_string => '123456')); v_n := length(v_string); dbms_output.put_line(v_string '--' v_n); end; 也可以寫成函數後調用實現MD5加密: create or replace function fun_get_md5(i_username in varchar2, i_password in varchar2) return varchar2 is begin return utl_raw.cast_to_raw(dbms_obfuscation_toolkit.md5(input_string => (i_usernamei_password))); end fun_get_md5; sql> select fun_get_md5('zhangwz','123456') from al; fun_get_md5('zhangwz','123456' -------------------------------------------------------------------------------- 下邊是網上摘了一個存取用戶密碼信息的例子,以供大家參考: create table sys_user (id number,username varchar2(50),password varchar2(50)); 存取用戶密碼的過程應該寫到存儲過程中,以方便以後調用,這里是盡量省略來寫。 用戶注冊時存入密碼: sql> insert into sys_user values (1001,'zhangwz', fun_get_md5('zhangwz','123456')) ; sql> commit; 用戶登錄時取出密碼: create or replace procere p_login(i_uname varchar2 ,i_passwd varchar2) is v_id number; v_error_text varchar2(200); begin select id into v_id from sys_user where username = i_uname and password = fun_get_md5(i_uname, i_passwd); exception when others then v_error_text := '用戶名或密碼不正確!' ',sqlcode:' sqlcode ' sqlerrm:' substr(sqlerrm ,1 ,200); end p_login;
⑤ 登陸界面連接sql server資料庫用MD5類的Hash演算法加密
說原理就行了。一般來說用戶注冊之後,把用戶提交的密碼,用MD5加密,資料庫保存加密之後的密文,可以不保存原始的明文。下次用戶登錄,輸入密碼之後,用MD5加密,然後用加密之後的密文和資料庫的密文匹配。如果一致的話就允許登錄。驗證的過程不需要驗證明文,密文一致就行了。資料庫被人盜了別人也很難破解原始的明文。
⑥ 如何設置sql md5 加密加密後怎麼用原始密碼進不了系統了
/**
*
*/
package com.yupont.app.user;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
/**
* ClassName: MD5 <br>
* Function : 提供MD5加密方法 <br>
* @author L.H.W <br>
* Version : 1.0 <br>
* Since : 2005-10-13 <br>
*
*/
public class MD5 {
/**
*
* @param string to encode
* @return Encoded String
*/
public static String crypt(String str)
{
if (str == null || str.length() == 0) {
throw new IllegalArgumentException("String to encript cannot be null or zero length");
}
StringBuffer hexString = new StringBuffer();
try {
MessageDigest md = MessageDigest.getInstance("MD5");
md.update(str.getBytes());
byte[] hash = md.digest();
for (int i = 0; i < hash.length; i++) {
if ((0xff & hash[i]) < 0x10) {
hexString.append("0" + Integer.toHexString((0xFF & hash[i])));
}
else {
hexString.append(Integer.toHexString(0xFF & hash[i]));
}
}
}
catch (NoSuchAlgorithmException e) {
throw new RuntimeException(e);
}
return hexString.toString();
}
}
用這個類對你的用戶登錄密碼加密,然後生成的字元串存到資料庫中,再下次登錄時候用這個類處理比較資料庫中原有注冊時候的字元串,相同就成功,反之登錄失敗。
⑦ 如何在sql的存儲過程中使用md5加密
select substring(sys.fn_sqlvarbasetostr(HashBytes('MD5','123456')),3,32)
⑧ 關於在SQl里對欄位進行MD5加密存儲的
md5加密有相關的加密函數,但不是在資料庫中操作的,資料庫只是來保存加密的結果字元串。
加密的話你找相關語言的加密函數就行
⑨ 怎樣在資料庫里應用MD5加密,初學者不太懂
Oracle資料庫裡面可以使用PLSQL編寫MD5加密的存儲過程或者函數,或者使用JAVA存儲過程。