对我的查询字符串

时间:2017-07-09 18:46:30

标签: java encryption

这不是为了安全,而是为了隐匿,因此临时用户将无法确定电子邮件地址是什么。

我不想在网址中显示电子邮件地址,如:

www.example.com/?id=johnsmith@example.com

我想加密电子邮件地址,目标是:

  
      
  1. 加密文本应该可以编码为查询字符串
  2.   
  3. 长度应尽可能短
  4.   
  5. 不应轻易解密,例如使用md5      
        
    1. 我可以将值解密回来
    2.   
  6.   

有人可以建议符合上述标准的ecryption算法吗?

2 个答案:

答案 0 :(得分:1)

当你谈论加密时,你会有字节,而不是字符。 你可以使用Base64将这些字节编码为字符。 例如:

import javax.xml.bind.DatatypeConverter;

// Encrypt if you really need to encrypt it
// I am assuming you have a method that receive a String, encrypt it and return the byte[] encrypted.
// If you don't know how to encrypt, just ask a new question about how to do it in Java.
byte[] b = encrypt( "email@example.com" );
String encoded = DatatypeConverter.printBase64Binary( b );

// Otherwise, just encode it
b = "email.example.com".getBytes(java.nio.charset.StandardCharsets.UTF_8);
encoded = DatatypeConverter.printBase64Binary( b );

答案 1 :(得分:0)

如果您的目标不是处理它的安全方面,那么您可以通过Base64编码和解码String来实现它

 final String encodedValue =  new BASE64Encoder().encode("johnsmith@example.com".getBytes());
System.out.println("encodedValue = "+encodedValue );
final String decodedValue =  new String(new BASE64Decoder().decodeBuffer(encodedValue));
System.out.println("decodedValue = "+decodedValue);