2014-11-25 88 views
1

我有一段代码在加密时可以正常工作,加密工作正常,但由于必须在URL中传递加密字符串,因此我不喜欢使用的字符,我更喜欢的字符是az,AZ和0-9,这可能吗?仅使用java中的密码加密对字符串字符进行加密

String key = enc_key; 

// Create key and cipher 
Key aesKey = new SecretKeySpec(key.getBytes(), "AES"); 
Cipher cipher = Cipher.getInstance("AES"); 

// encrypt the text 
cipher.init(Cipher.ENCRYPT_MODE, aesKey); 
byte[] encrypted = cipher.doFinal(text.getBytes()); 
System.out.println(new String(encrypted)); 

加密的字符串看起来像这样 ò'Ê>‡6?dövNé÷小号 未URL友好:-(,有什么建议吗?

回答

5

首先使用普通AES然后base64对结果进行编码;另一方面,他们必须进行base64解码,然后进行解密;如果你使用的是java 8,则使用内置的base64 codec;如果使用java 7或更早版本,则使用apache commons codec

+0

base64编码是一种标准编码,意味着它可以被解码其他人,因为这将通过URL使用,所以这是不安全的,或者我错了? – Lappies 2014-11-25 10:13:10

+1

Base64编码将在加密后使用,以便将加密字节编码为可在URL中安全使用的表单。另一方面,该字符串将首先被base64解码,然后解密以获得纯文本。 – 2014-11-25 10:17:45

+0

太棒了,这似乎工作正常,谢谢 – Lappies 2014-11-25 10:28:58