URL特殊字符使用blowfish加密进行代码转换?

时间:2014-01-31 16:27:20

标签: java encryption url-rewriting blowfish

我正在解决客户端以加密格式通过URL发送电子邮件的问题。 我们必须在客户端使用blowfish进行加密,在结束时使用解密。

下面的BLOWFISH CODE ---

//ENCRYPTED  as  jAOtTv22BfkTkVrhTN/RHQ==   
public String encrypt(String username,String code) throws Exception {
     try {
    byte[] keyData = (username).getBytes();
    SecretKeySpec secretKeySpec = new SecretKeySpec(keyData, "Blowfish");
    Cipher cipher = Cipher.getInstance("Blowfish");
    cipher.init(Cipher.ENCRYPT_MODE, secretKeySpec);
    byte[] hasil1 = cipher.doFinal(username.getBytes());
byte[] hasil2 = cipher.doFinal(code.getBytes());
return new BASE64Encoder().encode(hasil1);
    } catch (Exception e) { System.out.println(e);
    return null; }
}

//DECRYPT  --doug@gmail.com
public String decrypt(String email,String code) throws Exception {
    try {
    byte[] keyData = (code).getBytes();
    SecretKeySpec secretKeySpec = new SecretKeySpec(keyData, "Blowfish");
    Cipher cipher = Cipher.getInstance("Blowfish");
    cipher.init(Cipher.DECRYPT_MODE, secretKeySpec);
    byte[] hasil = cipher.doFinal(new BASE64Decoder().decodeBuffer(email));
    return new String(hasil);
    } catch (Exception e) {  System.out.println("exaception ="+e);
    return null; }
}

我们需要在网页上显示之前解密和屏蔽。 但是特殊字符编码的问题就像url一样。如何处理它在我们这边解密??? 例如,我们得到了这个 -

  http://localhost/demo/Controller?email=jAOtTv22BfkTkVrhTN/RHQ%3D%3D

where blowfish encryption is - jAOtTv22BfkTkVrhTN/RHQ==

在没有涉及特殊字符代码的情况下正常工作

e.g - wK6DTqKguftd0%2BePXqlB9BORWuFM39Ed

url中的字符代码---

 http://perishablepress.com/url-character-codes/

提前感谢任何建议或帮助。

1 个答案:

答案 0 :(得分:1)

如果您理解正确,则会遇到特定于URL的字符掩码问题,例如“=”。

如果是这样,您可以使用

java.net.URLDecoder.decode(text, encoding)

解码base64字符串。