解密

时间:2017-02-17 14:02:55

标签: java servlets encryption jasypt

我正在制作"忘记密码"。我正在尝试使用email + current_time创建重置令牌。电子邮件是用户登录,而代码将检查时间> = 5分钟,然后此链接将无效。这是我的代码:

// preparing token email + time
Date now            = new Date();
String prepareToken = "?email="+email+"&tokenTime="+now.getTime();

// encrypt prepareToken value
Encryptor enc = new Encryptor();
resetToken    = enc.encrypt(resetToken);

令牌将以http://domainname.com/ForgotPassword?resetToken=adj23498ljj238809802340823

的形式发送

问题:
当用户点击它然后我得到了请求参数,显然解密了这个参数,但我怎么能在一个字符串+时间内收到电子邮件作为另一个字符串

请告知

1 个答案:

答案 0 :(得分:0)

如果您的问题只是解析已解码的String以获取某些参数的Map,我建议您阅读Parse a URI String into Name-Value Collection

希望它有所帮助。

编辑:

假设您拥有上一个链接中的splitQuery(URL url)方法,并且您已成功解码该令牌:

public String getEmailFromToken(String decodedToken) {
        // if you decoded your token it will looks like the prepareToken String
        String stubUrl = "http://localhost"+decodedToken;
        Map<String,String> map = splitQuery(new URL(stubUrl));
        return map.get("timeToken");
    }

我创建了一个正确形成的URL来尊重URL语法。 通过少量调整,您应该能够为String实现splitQuery。我希望你能做到这一点。