JAva WEBはパスワードを取り戻す方法を開発して登録時のメールボックスを通じてパスワードを取り戻す(修正する)


登録時のメールボックスでパスワードを取り戻すのは比較的信頼できる方法ですが、ここではパスワードを取り戻すことを指すのはパスワードを変更する別の言い方です.サーバ上のデータベースにパスワードを保存する方法は通常MD 5で暗号化されているので、パスワードを逆訳して元のパスワードを得ることはできません.そのため、パスワードを再修正することでパスワードを取得し、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];
    }

これでパスワードの修正に成功します.メールの送信などの方法があります.はっきり書いてください.