1. 程式人生 > >java WEB開發 找回密碼 如何通過註冊時候的郵箱找回(修改)密碼

java WEB開發 找回密碼 如何通過註冊時候的郵箱找回(修改)密碼

通過註冊時候的郵箱找回密碼是一種比較可靠的方式,這兒指的找回密碼是修改密碼的另一種說法,在伺服器上的資料庫中密碼儲存的方式通常是通過MD5加密過的,不能反譯密碼得到原始密碼,所以只有通過重新修改密碼來獲取密碼,update方法來更新密碼,通常我們需要在資料庫中能唯一確定要修改的使用者,通過郵箱地址唯一來確定唯一的使用者。

我們假如要修改密碼的郵箱是
    String EmailAddress = "[email protected]";

然後加密這個郵箱地址,不能通過人工識別的方式能夠確定郵箱地址,加密方式如下:

 private String encrypt(String name){
        String str = name + ":||:" + System.currentTimeMillis();
        String md5 = MD5Support.MD5(str + Constant.getMd5key());
        String result = null;
        try {
            result = Base64Support.toUrlStr((str + ":||:" + md5).getBytes("UTF-8"));
        }
        catch (UnsupportedEncodingException e){
            e.printStackTrace();
        }
        return result;
    }

通過上面加密後的資料就不容易被人工破解了,例如下面是我的郵箱加密後的字串

dHNhb3dlQGdtYWlsLmNvbTp8fDoxMjkxODU5NzgxMzkwOnx8OjM3ZDY4ODM3YTcwOGM3NTc0N2YxMjA0N2Q5ZTAxOTk0

這樣就能保證使用者不會通過自己在瀏覽器輸入地址而修改不是自己賬戶的密碼
然後得到這個加密的字串後,將組合好的一個訪問地址利用 java的mailsender傳送到郵箱
當用戶訪問的時候,將先前的修改密碼標誌關閉,這樣再次訪問這個地址的時候是無效的,這兒就有翻譯剛才我們加密的字串,方法如下

假設p是加密後的字串,下面的方法是判斷字串是否合法,合法返回true,否則返回false
boolean checkParam() {
        if (p == null)
            return false;
        String pStr = "";
        try {
            pStr = new String(Base64Support.fromUrlStr(p), "UTF-8");
        }
        catch (Exception e) {
            e.printStackTrace();
        }
        String[] arr = pStr.split(":\\|\\|:");
        return arr.length == 3 && (System.currentTimeMillis() - Long.parseLong(arr[1])) <= (60L * 1000 * 60 * 24 * 2) && MD5Support.MD5(arr[0] + ":||:" + arr[1] + Constant.getMd5key()).equals(arr[2]);

    }
如果通過檢驗以後我們就可以得到當初加密的郵箱地址,然後根據郵箱地址來改變密碼
    String getNameFromP(String p) {
        String pStr = "";
        try {
            pStr = new String(Base64Support.fromUrlStr(p), "UTF-8");
        }
        catch (Exception e) {
            e.printStackTrace();
        }
        return pStr.split(":\\|\\|:")[0];
    }

這樣就可以成功的修改密碼了

相關推薦

java WEB開發 找回密碼 如何通過註冊時候的郵箱找回修改密碼

通過註冊時候的郵箱找回密碼是一種比較可靠的方式,這兒指的找回密碼是修改密碼的另一種說法,在伺服器上的資料庫中密碼儲存的方式通常是通過MD5加密過的,不能反譯密碼得到原始密碼,所以只有通過重新修改密碼來獲取密碼,update方法來更新密碼,通常我們需要在資料庫中能唯一確定要

Java——Web開發之開源的資料庫連線池C3P0與DBCP的使用

緊接上一篇資料庫連線池的學習,點連線直達~   資料庫連線池的簡單理解與使用 資料庫連線池DBCP程式碼連線與配置檔案: 1.先匯入使用的jar檔案,分別是dbcp.jar與pool.jar檔案 2.分別使用兩種方式實現,使用配置檔案(dbcpconfig.

web開發excel檔案上傳及解析

前言 在web開發的時候,我們經常有遇到檔案的上傳以及解析的需求,比如我們將excel檔案上傳並且解析,最後將解析的excel的內容插入到資料庫中,今天就實踐一下檔案的上傳以及excel的解析,這篇部落格主要是實踐檔案上傳功能,對應的excel檔案的解析,將在下一篇部落格實踐。 準備工作:

web開發excel檔案上傳及解析

前言: 接著上一篇部落格檔案上傳,這一篇部落格實踐的是excel檔案的解析,通常我們會需要這樣的需求,就是讓使用者下載一個格式的模板,然後在模板中按照要求填寫資料,最後的就是將excel中的內容全部儲存到資料庫中,從而實現一種批量的上傳的作用,節省很多時間。 準備工作: 要實現excel

Web開發基礎_Servlet學習_0025_專案練習

專案名稱:中國電信運營支援系統-網路版(七) 專案登記部分  jstl:import標籤 <c:import>說明  案例演示: 工程案例目錄結構 MainServlet.java package web; import java.i

Web開發基礎_Servlet學習_0029_專案練習

專案名稱:中國電信運營支援系統-網路版(十) 驗證碼 登入驗證碼 案例演示: 工程案例目錄結構  DBUtil.java package util; import java.io.IOException; import java.sql.Connec

MyEclipse Web開發教程:XML & XML架構

MyEclipse 線上訂購年終抄底促銷!火爆開搶>> MyEclipse最新版下載 1.MyEclipse中的XSD編輯 本文件介紹MyEclipse XML Schema(XSD)編輯器中的一些可用函式。XML Schema(XSD)編輯器包括高階XSD編輯,例如:

Java web 之 Spring+Mybatis+Spring MVC框架整合

前兩篇,我們主要講了聚合工程Maven的建立(通過Maven本地倉庫,集中管理我們專案中的jar包),子Maven Project ssm-web 繼承父Maven Project  ssm-par

Java Web開發如何在註冊和登入時對使用者名稱和密碼進行驗證?

1 註冊時,對註冊的手機號和密碼驗證: 手機號碼為常用的移動,聯通,電訊號 密碼為數字和字母的組合,切長度不能少於8位 方案 在提交註冊資訊時,用Ajax提交手機號和密碼到Servlet進行驗證 程式

Java Web開發7___通過資料庫連線池連線MySQL 資料庫

本博文 給出一個使用資料庫連線池的例子, 將使用webdb 資料來源 獲取一個MySQL 資料庫連線,並查詢其中的t_dirctionary表, 最後將查詢結果顯示在客戶端瀏覽器。 以下ViewDictionary 類 演示了怎麼樣 使用資料庫連線池獲取資料庫連線, 程式碼如下: i

【轉·開發技術】C#實現 [忘記密碼] 通過郵箱取回密碼】功能

內容概括:通過引用Jmail元件實現 “通過郵箱找回密碼” 功能 前端頁面程式碼 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/

java web 開發 如何實現 輸入密碼三次錯誤 後 鎖定賬戶功能。

要求 : 1、 不能使用cookie 和 session ,因為 時間和條件受限2、不可以存、讀取資料庫 不給系統壓力 鎖定是很簡單的,只要在使用者表中加上失敗次數,鎖定標誌,鎖定時間(可選)。每次登入時,已經鎖定直接禁止登入。沒有鎖定就判定,如果失敗就把失敗次數+1,

Java Web開發:Spring MVC連線 MongoDB啟動使用者名稱密碼

預先準備 配置版本 spring MVC 4.1.1 spring-data-mongodb 1.60 mongodb3.2.1 springMVC開發環境已經配好 mongodb新增使用者 注意事項:mongodb3.0版本後密碼加密有兩種方式,MONGODB-CR兩種方

Java Web開發環境搭建

web 瀏覽器 ble 安裝tomcat 配置環境 6.0 work enable 開發 1.1 下載並安裝JDK   安裝完成後需要配置環境變量:     1. 右鍵單擊【我的電腦】->【屬性】->【高級】->【環境變量】     2. 【新建用戶變量】

JAVA-JAVA WEB開發工具下載

nload download acl web開發 network 開發 下載 .exe x64 JAVA WEB開發工具下載 1.JDK下載程序名:jdk-8u141-windows-x64.exe下載地址:http://www.oracle.com/technetwor

Java開發工程師(Web方向) - 01.Java Web開發入門 - 第4章.Maven

編譯器 靜態資源 重復 mvn clean art servle 技術 工具 環境 第4章--Maven Maven實戰 Java Web應用的部署: 手動式: 編譯:javac -cp $CATALINA_HOME/lib/servlet-api.jar web-inf/

Java開發工程師(Web方向) - 01.Java Web開發入門 - 第6章.蜂巢

多個 計算 margin style 打包 工程 自動 後端服務 運行 第6章--蜂巢 蜂巢簡介 網站開發完,就需要測試、部署、在服務器上運行。 網易蜂巢: 采用Docker容器化技術的雲計算平臺 https://c.163.com 容器管理:容器可被視作為雲主機的服務器

Java Web開發實戰經典》.(李興華).[PDF]pdf

多維 為什麽 get thread 覆寫 受限 thread類 基本應用 5.1 下載地址:網盤下載 內容簡介 · · · · · · 《Java開發實戰經典(名師講壇)》是一本綜合講解Java核心技術的書籍,在書中使用大量的代碼及案例進行

Java Web開發中Spring+MyBatis框架的簡單搭建

jar包 簡單的 .class pre web項目 指定 clip 開發 location 這裏使用的eclipse,首先創建一個動態web項目。 1、導入Spring IOC、AOP、DAO、dbcp、dbdrive、mybatis.jar 、 mybatis-s

java web 開發入門 --- tomcat/servlet/jsp

title 啟動服務 軟件 完成後 idt head font pac tom   在做java web 開發時,首先就要安裝tomcat。tomcat是什麽呢?它就是一個web服務器,也叫web容器,我們把寫好的代碼(jsp, html)放到它裏面,然後啟動它,就可以從外