亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        基于加鹽BCrypt算法的電商安全模塊設(shè)計(jì)及實(shí)現(xiàn)①

        2019-10-18 06:40:54王立華
        關(guān)鍵詞:字符串加密算法哈希

        扈 瑋,王立華

        (山東科技大學(xué) 電子信息工程學(xué)院,青島 266590)

        電子商務(wù)的快速發(fā)展對(duì)系統(tǒng)的安全性提出了更高的要求,但是許多企業(yè)應(yīng)用的安全性還沒(méi)有得到足夠的重視,密碼泄露的情況時(shí)有發(fā)生,造成了嚴(yán)重的經(jīng)濟(jì)損失和社會(huì)不安.早在2008年,卡內(nèi)基梅隆大學(xué)軟件工程研究所就通過(guò)美國(guó)政府資助的漏洞警報(bào)系統(tǒng)向安全專業(yè)人員發(fā)出公告:MD5應(yīng)被視為已破解且不適合繼續(xù)使用的加密方法;網(wǎng)絡(luò)公司TrustedSec LLC的首席執(zhí)行官David Kennedy指出:“MD5被認(rèn)為在2013年之前就已經(jīng)過(guò)時(shí)了.從那時(shí)起,大多數(shù)公司開(kāi)始使用更安全的哈希算法”[1].在2019年01月,BMG公司正式確認(rèn)該公司的熱門游戲《塞勒姆小鎮(zhèn)》有安全漏洞,該漏洞現(xiàn)已得到解決,但該游戲擁有760萬(wàn)用戶,其信息受到損害.用戶的密碼、IP地址和電子郵件信息有被泄露的風(fēng)險(xiǎn),而泄密的原因是:使用MD5哈希算法存儲(chǔ)帳戶密碼[2].隨著此類密碼泄露事件的一次次發(fā)生,迫切需要更安全的加密算法提高系統(tǒng)的安全性能.

        運(yùn)用MD5加密算法雖然可以實(shí)現(xiàn)密碼加密的功能,產(chǎn)生32位字符串并且算法不可逆.但是MD5加密算法存在著諸多弊端:同一密碼經(jīng)過(guò)MD5算法產(chǎn)生的字符串一模一樣;同時(shí)隨著計(jì)算機(jī)技術(shù)的發(fā)展和計(jì)算水平的不斷提高,可以用彩虹表等方法輕松破解,已不再適合安全要求較高的場(chǎng)合使用[3-6].針對(duì)此類情況作出改進(jìn),旨在設(shè)計(jì)并實(shí)現(xiàn)一個(gè)以springmvc+spring+mybatis框架為基礎(chǔ)的電商安全模塊[7-11],其中表現(xiàn)層springmvc框架用于客戶端的視圖顯示;業(yè)務(wù)層spring框架用于系統(tǒng)業(yè)務(wù)邏輯操作的具體實(shí)現(xiàn);持久化層框架mybatis用于與Mysql數(shù)據(jù)庫(kù)進(jìn)行數(shù)據(jù)交互,完成增刪改查(CRUD)操作.同時(shí)用更安全的加鹽Bcrypt算法實(shí)現(xiàn)密碼加密和驗(yàn)證功能,加強(qiáng)了數(shù)據(jù)安全的維護(hù)工作.

        1 加鹽 BCrypt算法

        1.1 BCrypt算法

        Bcrypt算法是基于Blowfish加密設(shè)計(jì)的一個(gè)慢哈希算法,是Open BSD或其他Linux發(fā)行版的默認(rèn)加密算法,該算法的設(shè)計(jì)是為了抵抗對(duì)哈希值或者鹽的布魯特攻擊,有效地解決了MD5加密算法的弊端[12-17].

        算法原形是:DK=bcrypt(cost,salt,input)

        參數(shù)cost是計(jì)算強(qiáng)度,即循環(huán)次數(shù);

        參數(shù)salt是密碼學(xué)中的鹽;

        參數(shù)input是輸入的密碼文本;

        輸出DK是生成的派生密鑰.

        BCrypt算法計(jì)算后的密文中包含了算法版本、循環(huán)次數(shù)、鹽值以及哈希字符串.下面是“123456”以10為循環(huán)次數(shù)經(jīng)加鹽BCrypt算法加密后隨機(jī)生成的60位字符串“$2a$10$jI49TG.oPta0fuhlxqtLzeUZuw N1rzZU9G/1R1CIYIT.lirNPimwu”.其中$是分割符,無(wú)意義;2a表示BCrypt算法加密版本號(hào);10是cost值,表示密碼加密的計(jì)算強(qiáng)度,強(qiáng)度越高,則密碼越復(fù)雜,計(jì)算時(shí)間也越長(zhǎng);而后的前22位是鹽值,具有隨機(jī)性;其余的哈希字符串就是密碼的密文了.

        1.2 加鹽處理

        如果只是單純的哈希字符串存儲(chǔ),如果兩個(gè)或更多人設(shè)置的密碼相同,則加密后將得到相同的結(jié)果,進(jìn)入到數(shù)據(jù)庫(kù)破解一個(gè)就可以破解一大片的密碼.例如名為A的用戶可以查看數(shù)據(jù)庫(kù),可以發(fā)現(xiàn)存儲(chǔ)的哈希字符串結(jié)果有些是相同的,那么不同的用戶對(duì)應(yīng)的就是同一個(gè)設(shè)置密碼,這樣就可以利用別人的身份登錄系統(tǒng).由于鹽是隨機(jī)產(chǎn)生的,存儲(chǔ)不同用戶數(shù)據(jù)時(shí)加入的鹽都是隨機(jī)的,所以就可以保證不同的用戶即使有相同的密碼,存儲(chǔ)在數(shù)據(jù)庫(kù)中的密碼也是千差萬(wàn)別的.上述加密策略,可以形象地稱為“加鹽哈希加密”[18],可以在對(duì)密碼進(jìn)行哈希算法之后,將鹽隨機(jī)并混入加密后的哈希字符串,進(jìn)行二次加密,驗(yàn)證時(shí)也無(wú)需單獨(dú)提供之前的鹽,從而無(wú)需單獨(dú)處理鹽的問(wèn)題,更加安全方便.

        BCrypt是單向的,而且經(jīng)過(guò)salt和cost的處理,與MD5加密算法相比,安全性得到了極大地提高.為使攻擊者難以構(gòu)造出所有可能值的查詢表,其鹽值和計(jì)算強(qiáng)度的值必須足夠長(zhǎng),彩虹表攻擊破解密文的概率則越低,破解的難度也就越大.

        2 加鹽BCrypt算法的模型分析

        在電商安全模塊中,用戶密碼的加密和驗(yàn)證流程如圖1所示.流程包括用戶注冊(cè)和用戶登錄兩大部分[19].有信息系統(tǒng)存在的地方,就需要進(jìn)行用戶信息認(rèn)證,還可以根據(jù)用戶賦予不同的訪問(wèn)權(quán)限.安全模塊的注冊(cè)和登錄的流程大致如下:

        圖1 密碼加密存儲(chǔ)與驗(yàn)證流程圖

        (1)用戶注冊(cè):用戶輸入登錄名、密碼及其他有關(guān)信息后,將相關(guān)數(shù)據(jù)傳輸?shù)胶蠖朔?wù)器,直至保存到Mysql數(shù)據(jù)庫(kù)中.因?yàn)榈卿浢彩侵麈I,具有唯一性,若輸入的登錄名已經(jīng)存儲(chǔ)在數(shù)據(jù)庫(kù)中,則無(wú)法成功注冊(cè),仍就停留在注冊(cè)頁(yè)面并且彈出注冊(cè)失敗的提示;

        (2)后端服務(wù)器接受到用戶數(shù)據(jù),將其中的密碼進(jìn)行加鹽BCrypt算法加密處理.若主鍵不重復(fù),則表單數(shù)據(jù)和對(duì)應(yīng)的創(chuàng)建日期存儲(chǔ)到數(shù)據(jù)庫(kù)中,頁(yè)面跳轉(zhuǎn)到登錄頁(yè)面;

        (3)用戶登錄:用戶輸入的登錄名及密碼傳輸?shù)椒?wù)器,服務(wù)器通過(guò)登錄名從mysql數(shù)據(jù)庫(kù)中查詢?cè)撚脩羰欠翊嬖?若用戶不存在,則仍就停留在登錄頁(yè)面;

        (4)若用戶存在,則服務(wù)器將客戶端傳過(guò)來(lái)的密碼經(jīng)過(guò)BCrypt算法加密處理得到哈希字符串;同時(shí)服務(wù)器根據(jù)登錄名取得數(shù)據(jù)庫(kù)中對(duì)應(yīng)的密文,并提取出鹽值得到哈希字符串;并對(duì)兩個(gè)哈希字符串進(jìn)行驗(yàn)證,如果完全相同,則表示用戶登錄成功,頁(yè)面跳轉(zhuǎn)到用戶主頁(yè);如果不同,則表明用戶登錄失敗,仍就停留在登錄頁(yè)面,并且不會(huì)給出任何信息提示.

        3 加鹽Bcrypt算法的實(shí)現(xiàn)

        用戶注冊(cè)和登錄功能涉及到用戶表tb_user,如表1所示;涉及到的類,如表2表示.

        3.1 用戶注冊(cè)的密碼加密功能

        用戶注冊(cè)的時(shí)序圖如圖2所示,時(shí)序圖中涉及到的主要方法介紹:

        Add (@RequestBody TbUser user):后端控制層增加用戶信息的方法;

        圖2 密碼加密功能時(shí)序圖

        encode (rawPassword):加密方法,參數(shù)rawPass- -word為用戶輸入的密碼;

        add (TbUser user):后端服務(wù)層增加用戶信息的方法;

        insert (user):后端數(shù)據(jù)訪問(wèn)層向數(shù)據(jù)庫(kù)增加用戶信息的方法.

        表1 用戶表(tb_user)

        表2 類的簡(jiǎn)介

        當(dāng)用戶在注冊(cè)頁(yè)面上填寫表單,點(diǎn)擊注冊(cè)按鈕后,將依次調(diào)用控制類UserController的add (@Requ--estBody TbUser user)方法;BCryptPasswordEncoder的encode (rawPassword)方法,并將加密后的字符串存入user中;服務(wù)接口類UserService的add (TbUser user)方法;服務(wù)實(shí)現(xiàn)類UserServiceImpl的add (TbUer user)方法,并設(shè)置申請(qǐng)日期存入user中;數(shù)據(jù)訪問(wèn)類TbUser Mapper的insert (user)方法,向數(shù)據(jù)庫(kù)插入表單數(shù)據(jù).

        在控制類UserController中,如果增加數(shù)據(jù)成功,Result傳遞的參數(shù)為{success:true,message:“注冊(cè)成功”},頁(yè)面自動(dòng)跳轉(zhuǎn)到登錄頁(yè)面;如果增加數(shù)據(jù)失敗,Result傳遞的參數(shù)為{success:false,message:“注冊(cè)失敗”},頁(yè)面仍就停留在注冊(cè)頁(yè)面.

        用戶注冊(cè)功能的實(shí)現(xiàn)效果圖,如圖3所示.

        圖3 注冊(cè)功能實(shí)現(xiàn)圖

        3.2 用戶登錄的密碼驗(yàn)證功能

        用戶登錄的時(shí)序圖如圖4所示,時(shí)序圖中涉及到的主要方法介紹:

        loadUserByUsername (String username):認(rèn)證類的驗(yàn)證方法,參數(shù)為用戶輸入的登錄名;

        findOne (String id):后端服務(wù)層根據(jù)id查詢用戶數(shù)據(jù)的方法;

        selectByPrimaryKey (id):后端控制層根據(jù)id從數(shù)據(jù)庫(kù)查詢用戶數(shù)據(jù)的方法;

        matches (rawPassword,encodedPassword):密碼驗(yàn)證方法,參數(shù)encodedPassword表示從數(shù)據(jù)庫(kù)讀取的密文.

        圖4 密碼驗(yàn)證功能時(shí)序圖

        用戶在登錄頁(yè)面輸入登錄名和密碼,點(diǎn)擊登錄按鈕之后,依次調(diào)用UserDetailsServiceImpl的load- -UserByUsername(String username)方法;UserService- -Impl的 findOne(String id)方法;TbUserMapper的selectByPrimaryKey(id)方法,運(yùn)用mybatis框架的xml配置文件可以方便地從數(shù)據(jù)庫(kù)中得到主鍵對(duì)應(yīng)的TbUser用戶對(duì)象,TbUserMapper.xml文件里對(duì)應(yīng)的查詢語(yǔ)句如下:

        <select id= "selectByPrimaryKey" resultMap="BaseResultMap" parameterType= "java.lang.String">

        select <include refid= "Base_Column_List"/> from tb_user

        where user_id = #{ userId,jdbcType= VARCHAR}

        </select>

        其中parameterType表示輸入?yún)?shù)是字符串類型,user_id表示用戶輸入的登錄名,Base_Column_List表示主鍵對(duì)應(yīng)的包括諸多字段信息的TbUser用戶對(duì)象,resultType表示把查詢結(jié)果封裝到pojo類型中.

        在UserDetailsServiceImpl認(rèn)證類中,判斷user對(duì)象非空,若不滿足條件則仍是登錄頁(yè)面,若滿足條件則在spring-security.xml(安全框架配置頁(yè))的認(rèn)證管理器模塊引入密碼工具接口的實(shí)現(xiàn)類BCryptPasswordE- -ncoder,調(diào)用matches(rawPassword,encodedPassword)方法進(jìn)行密碼驗(yàn)證,判斷用戶輸入的密碼和從數(shù)據(jù)庫(kù)讀取的密碼是否一致,若不滿足條件則仍是登錄頁(yè)面,若滿足條件則跳轉(zhuǎn)到用戶系統(tǒng)主頁(yè).用戶登錄功能實(shí)現(xiàn)效果圖,如圖5所示.

        4 加密算法的實(shí)現(xiàn)效果

        如圖6所示,數(shù)據(jù)庫(kù)存儲(chǔ)的密碼均為123456,xiaoA用戶的密xiaoB用戶和xiaoC用戶的密碼都采用MD5加密算法,產(chǎn)生了相同的32位字符串,存儲(chǔ)到數(shù)據(jù)庫(kù)中.管理員雖然不能直觀看到賬號(hào)的密碼,但是同樣的明文經(jīng)過(guò)MD5算法加密產(chǎn)生相同的密文,而且可以用彩虹表等方法輕松破解.采用加鹽BCrypt算法成功解決了以上問(wèn)題,正如圖中的xiaoD用戶和xiaoE用戶的密碼都采用加鹽BCrypt算法,產(chǎn)生了隨機(jī)的60位字符串,存儲(chǔ)到數(shù)據(jù)庫(kù)中,大大提高了數(shù)據(jù)的安全性.

        圖5 登錄功能實(shí)現(xiàn)圖

        圖6 實(shí)現(xiàn)效果圖

        5 總結(jié)

        現(xiàn)今信息安全形勢(shì)不容樂(lè)觀,很多企業(yè)應(yīng)用安全性未得到足夠重視,涉及購(gòu)物的電商企業(yè)更應(yīng)加強(qiáng)信息安全,避免造成不可估量的損失.本文結(jié)合高內(nèi)聚低耦合法則、SSM框架三層架構(gòu)的思想,詳細(xì)闡述了用戶注冊(cè)和登錄功能設(shè)計(jì)與實(shí)現(xiàn)過(guò)程,采用加鹽BCrypt加密算法實(shí)現(xiàn)密碼存儲(chǔ)加密和驗(yàn)證功能,解決MD5加密算法的弊端,為電商安全提供了一份有效解決方案.

        猜你喜歡
        字符串加密算法哈希
        基于OpenCV與均值哈希算法的人臉相似識(shí)別系統(tǒng)
        基于小波變換和混沌映射的圖像加密算法
        基于維度分解的哈希多維快速流分類算法
        Hill加密算法的改進(jìn)
        一種新的基于對(duì)稱性的字符串相似性處理算法
        對(duì)稱加密算法RC5的架構(gòu)設(shè)計(jì)與電路實(shí)現(xiàn)
        基于同態(tài)哈希函數(shù)的云數(shù)據(jù)完整性驗(yàn)證算法
        基于Arnold變換和Lorenz混沌系統(tǒng)的彩色圖像加密算法
        一種基于Bigram二級(jí)哈希的中文索引結(jié)構(gòu)
        依據(jù)字符串匹配的中文分詞模型研究
        手机看黄av免费网址| 亚洲一区日本一区二区| 国产三级av在线精品| 少妇无码太爽了在线播放| 午夜精品久久久久久| 国产高清吃奶成免费视频网站 | 女人色毛片女人色毛片18| 国产精品综合久久久久久久免费| 精品国产麻豆免费人成网站| 麻豆文化传媒精品一区观看| 国产伦久视频免费观看视频| 国产农村三片免费网站| 亚洲av高清一区三区三区| 国产一区二区三区色哟哟| 正在播放国产多p交换视频| 亚洲国产欧美在线成人| 亚洲一区二区三在线播放| 亚洲天堂精品一区入口| 内射少妇36p亚洲区| 亚洲国产99精品国自产拍| 我也色自拍俺也色自拍| 国产在线第一区二区三区| 久久久久久久久久久国产| 91亚洲欧洲日产国码精品| 国产天堂av在线播放资源| 妺妺窝人体色777777| 性一交一乱一伦a片| 国产精品乱子伦一区二区三区 | 少妇高潮惨叫正在播放对白| 中文字幕乱码亚洲无线精品一区| 青青草视频国产在线观看| 久久亚洲乱码中文字幕熟女 | 麻豆精品国产免费av影片| 欧美成人www在线观看| 成人h视频在线观看| 岛国精品一区二区三区| 日本中文字幕乱码中文乱码| 国产精品vⅰdeoxxxx国产| 日韩好片一区二区在线看| 久久无码中文字幕东京热| 一本一道久久综合久久|