如何在Java中加密String我需要的是加密将显示在二维条码中的字符串(PDF-417),这样当有人想到扫描它时就不会有任何可读性。其他需求:不应该复杂它不应包含RSA,PKI基础设施,密钥对等。它必须足够简单,以摆脱窥探的人,并易于解密其他有兴趣获取数据的公司。他们打电话给我们,我们告诉他们标准或给他们一些简单的密钥,然后可以用于解密。可能这些公司可以使用不同的技术,因此坚持一些与某些特殊平台或技术无关的标准会更好。你有什么建议?有一些Java类做encrypt()和decrypt()没有太多的并发症,实现高安全标准?
3 回答
万千封印
TA贡献1891条经验 获得超3个赞
我正在使用Sun的Base64Encoder / Decoder,它可以在Sun的JRE中找到,以避免在lib中使用另一个JAR。从使用OpenJDK或其他一些JRE开始,这很危险。除此之外,还有另一个原因我应该考虑使用带有编码器/解码器的Apache commons lib吗?
public class EncryptUtils {
public static final String DEFAULT_ENCODING = "UTF-8";
static BASE64Encoder enc = new BASE64Encoder();
static BASE64Decoder dec = new BASE64Decoder();
public static String base64encode(String text) {
try {
return enc.encode(text.getBytes(DEFAULT_ENCODING));
} catch (UnsupportedEncodingException e) {
return null;
}
}//base64encode
public static String base64decode(String text) {
try {
return new String(dec.decodeBuffer(text), DEFAULT_ENCODING);
} catch (IOException e) {
return null;
}
}//base64decode
public static void main(String[] args) {
String txt = "some text to be encrypted";
String key = "key phrase used for XOR-ing";
System.out.println(txt + " XOR-ed to: " + (txt = xorMessage(txt, key)));
String encoded = base64encode(txt);
System.out.println(" is encoded to: " + encoded + " and that is decoding to: " + (txt = base64decode(encoded)));
System.out.print("XOR-ing back to original: " + xorMessage(txt, key));
}
public static String xorMessage(String message, String key) {
try {
if (message == null || key == null) return null;
char[] keys = key.toCharArray();
char[] mesg = message.toCharArray();
int ml = mesg.length;
int kl = keys.length;
char[] newmsg = new char[ml];
for (int i = 0; i < ml; i++) {
newmsg[i] = (char)(mesg[i] ^ keys[i % kl]);
}//for i
return new String(newmsg);
} catch (Exception e) {
return null;
}
}//xorMessage}//class添加回答
举报
0/150
提交
取消
