2

私のサイトにはリンクがありますパスワードを忘れた場合 このリンクをクリックするとページが表示されるので、emailIdを入力して特定のgmailidにメールを送信します(このメールでリンクを生成する必要があります)。生成されたリンクページをクリックして、パスワードをリセットするために開いたとき(新しいパスワードやパスワードの確認など)。

私の問題は、メールを正常に送信できることですが、リンクをクリックすると、パスワードをリセットするための emailId が見つからないことです。 Gmail リンク :

http://127.0.0.1:8888/abc.html?gwt.codesvr=127.0.0.1:9997#forgetPassword

クライアントコード

sendButton.addClickHandler(new ClickHandler() {

    @Override
    public void onClick(ClickEvent event) {
        // TODO Auto-generated method stub

        greetServer.mailLinkSend(emailId.getText(),"http://"+Window.Location.getHost()+Window.Location.getPath()+Window.Location.getQueryString()+"#forgetPassword", new AsyncCallback<String>() {

            @Override
            public void onSuccess(String result) {
                // TODO Auto-generated method stub
                System.out.println("success"+result);
            }

            @Override
            public void onFailure(Throwable caught) {
                // TODO Auto-generated method stub
                System.out.println("fail");
            }
        });
    }
});

サーバー上

public String mailLinkSend(String emailText, String link) {
               SecretKey key = KeyGenerator.getInstance("DES").generateKey(); 

// 暗号化/復号化クラスを作成 DesEncrypter encrypter = new DesEncrypter(key);

// 暗号化された暗号化 = encrypter.encrypt(emailText);

// 文字列の復号化 decrypted = encrypter.decrypt(encrypted);

    String ss = "true";

            String emailMsgTxt = "Hi" + emailText + "\n" + "\n"
            + "Your Password Change Link\n" + link + "?id=" + encrypted
            + "\n Click on the above link to Reset your Password";
    String emailSubjectTxt = "Change Password Link";
    String emailFromAddress = "abc@gmail.com";
    String receipentList = emailText;

    try {
        MailUtility smtpMailSender = new MailUtility();
        smtpMailSender.postMail(receipentList, emailSubjectTxt,emailMsgTxt,   emailFromAddress);

    } catch (MessagingException messagingException) {}


    return ss;
}

MailUtility クラス

public class MailUtility {
    public String postMail(String recipients, String subject,
            String message, String from) throws MessagingException {

いくつかのコード....}

暗号化された形式でemailIdを送信しましたが、復号化されたキーを保存する方法と、1回の使用と48時間後にリンクを期限切れにする方法がわかりません。

4

1 に答える 1

1

したがって、暗号化と復号化に関する問題

したがって、以下のコードが役立ちます

注意 Constants.GWT_DES_KEY はサーバーとクライアントで同じになります

例えば ​​:

private final static byte[] GWT_DES_KEY = new byte[] { -110, 121, -65, 22, -60, 61, -22, -60, 21, -122, 41, -89, -89, -68, -8, 41, -119, -51, -12, -36, 19, -8, -17, 47};

サーバー上:

  TripleDesCipher cipher = new TripleDesCipher();
    cipher.setKey(Constants.GWT_DES_KEY);
    try {
    enc = cipher.encrypt(String.valueOf(value));
    } catch (DataLengthException e1) {
    e1.printStackTrace();
    } catch (IllegalStateException e1) {
    e1.printStackTrace();
    } catch (InvalidCipherTextException e1) {
    e1.printStackTrace();
    }

On the client, make sure you inherit the module:
<inherits name='com.googlecode.gwt.crypto.Crypto'/>
Then:

  TripleDesCipher cipher = new TripleDesCipher();
    cipher.setKey(Constants.GWT_DES_KEY);
    String dec ="";
    try {
    dec = cipher.decrypt(enc);
    } catch (DataLengthException e) {
    e.printStackTrace();
    } catch (IllegalStateException e) {
    e.printStackTrace();
    } catch (InvalidCipherTextException e) {
    e.printStackTrace();
    }
于 2013-01-31T07:58:30.947 に答える