【发布时间】:2012-10-13 10:31:25
【问题描述】:
对于以下代码,当我尝试对字符串进行 base64 编码时。
import org.apache.commons.codec.binary.Base64;
public class Codec {
public static void main(String[] args) {
String clrTxt = "Hello world";
String encodedTxt;
encodedText = new String(Base64.encodeBase64(clearText.getBytes()));
System.out.println("Encoded: " + encodedText);
System.out.println("Decoded:"
+ new String(Base64.decodeBase64(encodedText.getBytes())));
//
// output :
// Encoded: **SGVsbG8gd29ybGQ=**
// Decoded:Hello world
}
}
当我尝试插入一些额外字符时,在编码的字符串中,比如 --> "SGVsb*G8ASDFASDFASDFASDFASDF1234234*gd29ybGQ=" -> 我得到一个带有一些变音字符的明文。有没有一种方法可以验证和克服这一点。请回复。 提前致谢。
【问题讨论】:
-
为什么要在 Base64 编码的字符串中添加额外的字符?
-
作为安全措施。 “Hello world 只是一个例子”。如果解析将用作参数的敏感字符串怎么办?所以它确实解码了字符串,但响应不正确。为什么我宁愿验证然后解析编码的字符串是否完全有效并在解码时匹配模式?
-
Base64 只是一种将任意字节编码为文本格式的方法。它与安全没有任何关系。如果您想确保从第三方收到的某些文本没有被中间人修改,请使用加密签名。