MD5加鹽處理資料庫,保護資料安全

2021-07-24 23:49:26 字數 1661 閱讀 3594

錄web系統時通常都採用使用者名稱和密碼的形式,如果這樣的資料以明碼的方式放在資料庫中的話無疑會給別有用心的人以可趁之機,所以採取一定的防範措施是必要的。

現在比較安全的方式是用md5進行加密,利用apache commons的digestutils工具類我們可以迅速做到這一點。

要得到apache commons的digestutils工具類,你必須載入commons-codec-1.x.jar包,我使用的是commons-codec-1.3.jar。使用的具體類是:org.apache.commons.codec.digest.digestutils.

下面,我們的任務是,當使用者註冊時,將他註冊的密碼加密後存入資料庫,下面請見具體**:1//

對密碼進行加密,加密後再通過hibernate往資料庫裡存

2string changedpswd=digestutils.md5hex(pswd);34

user user

=new

user(name,changedpswd,email,brief);56

if(service.hassamename(name))

1112

if(service.hassameemail(email))

1718

try24

catch

(exception ex)

以上第二行**是進行md5加密的處理,如果使用者輸入的密碼是123456789,則會得到25f9e794323b453885f5181f1b624d0b這樣的字串。

註冊使用者後,資料庫中您將看到如下的對應記錄,看到這樣的文字,要去反猜原始密碼是非常困難的,當然您有山東大學王小雲教授的本事則不費吹灰之力。

下面,我們還要對登入時做一番處理,因為登入時用的是原始密碼,我們應該對它進行加密後再和資料庫中的對應字段進行比對,**如下:

user user

=objs.get(0);

//得到md5加密後的密碼

string changedpswd=digestutils.md5hex(password);

//再與資料庫中使用者密碼進行比對

if(user.getpassword().equals(changedpswd)

==false

)else

以上**中,password是使用者在頁面輸入的原始密碼,changedpswd是經過md5加密後的密碼,user是按名稱查詢出來的使用者,他的密碼部分就是已經經過md5加密的,我們拿這兩個密碼進行比對即可。

之所以沒有反向還原是因為md5加密和base64不一樣,前者是不可逆的,後者則可以還原。當然,base64不是嚴格意義上的加密手段。

最後的問題,如果資料庫中原有資料未經加密怎麼辦,好在mysql資料庫提供了md5函式幫我們做到這一點,使用update projectmanager_user set pswd=

md5(

pswd

)這樣的語句就可以將原來資料庫中的密碼部分用md5加密了。

下面的演示了這一過程:

原始資料:

使用update projectmanager_user set pswd=md5(pswd)加密後的資料庫記錄:

資料庫MD5加密(擴充套件)

create table tes 5 id int 4 notnull name varchar 20 not null pwd varchar 50 not null primary key id engine innodb default charset utf8插入一些資料 insert in...

資料庫加密技術總結(MD5加密,雜湊加鹽加密)

乙個好的資料庫加密系統,應該在保證資料安全的基礎上,盡可能的提高工作效率,在工作效率和安全性之間取得乙個平衡。總體來說滿足以下條件 1 md5加密演算法 在現階段,我們一般認為存在兩種加密方式,單向加密和雙向加密。雙向加密是加密演算法中最常用的,它將我們可以直接理解的明文資料加密為我們不可直接理解的...

資料庫級別的MD5加密

md5資訊摘要演算法 英語 md5 message digest algorithm 傳送門 md5不可逆 所以網上存在的那些md5破解是根據加密後的字元逐一比對加密表 自己建的 然後找到對應的密文,就把原文返回給你 create table ifnot exists tes 5 id int 4 ...