我需要一个尽可能短而快的代码来将String更改为不可读的东西(对于人类而言),并且还要使其再次可读。这一切都需要在java中发生。
这样的事情:
encrypt("test");
会产生这样的结果:
ôT¿ÄÜTV CÁˆ“5="ËÂÀœššbÀß{¡ä³
和
decrypt("ôT¿ÄÜTV CÁˆ“5 1="ËÂÀœššbÀß{¡ä³");
会再次导致原始
test
我应该去哪个方向,是否有任何课程可以为我做这个?我不是指像Base68Encryption或者它可能被称为的任何东西,我的意思是一个真正难以理解的文本,我可以安全地通过互联网发送。
答案 0 :(得分:1)
使用示例代码http://www.code2learn.com/2011/06/encryption-and-decryption-of-data-using.html查看数据算法的加密和解密。加密/解密嵌入在JRE中并且不难使用。
答案 1 :(得分:1)
这是使用真正加密的一个非常简短的例子。它是128位AES,非常安全 - 当然无法通过任何想象力读取。
它会生成一个随机密钥,因此每次运行时都会有所不同。您需要在两个以某种方式交换数据的程序之间共享密钥。
private static final String ENCRYPTION_ALGORITHM = "AES/ECB/PKCS5Padding";
private static final SecureRandom RANDOM = new SecureRandom();
public static void main(String[] args) throws UnsupportedEncodingException, GeneralSecurityException {
final KeyGenerator keyGen = KeyGenerator.getInstance(ENCRYPTION_ALGORITHM.substring(0, ENCRYPTION_ALGORITHM.indexOf('/')));
keyGen.init(128, RANDOM);
final SecretKey key = keyGen.generateKey();
final String s = "My topsecret string";
System.out.println(s);
final Cipher encryption = getCipher(key, Cipher.ENCRYPT_MODE);
final String enc = DatatypeConverter.printBase64Binary(encryption.doFinal(s.getBytes("UTF-8")));
System.out.println(enc);
final Cipher decryption = getCipher(key, Cipher.DECRYPT_MODE);
final String dec = new String(decryption.doFinal(DatatypeConverter.parseBase64Binary(enc)), "UTF-8");
System.out.println(dec);
}
private static Cipher getCipher(final Key key, final int mode) throws GeneralSecurityException {
final Cipher cipher = Cipher.getInstance(ENCRYPTION_ALGORITHM);
cipher.init(mode, key, RANDOM);
return cipher;
}
输出:
My topsecret string
ip4La5KUBJGTTYenoE920V5w0VBHwALv4fp3qyLTY9o=
My topsecret string
答案 2 :(得分:0)
我应该去哪个方向,是否有任何课程可以为我做这个?我不是指像Base68Encryption或者它可能被称为的任何东西,我的意思是一个真正难以理解的文本,我可以安全地通过互联网发送。
有两种方法可以解决这个问题:
您可以选择现有的高质量加密系统之一,这些加密系统在典型的JVM中作为标准实现。然后:
将字符串编码为字节;例如使用UTF-8。
使用约定的加密系统和先前商定的密钥加密字节。
使用base_64或同等代码对字节进行编码。
在另一端:
解码base_64
使用相同的系统和密钥解密字节。
解码UTF-8以获取字符串。
使用SSL / TLS保护TCP / IP连接,并按原样通过连接发送字符串。
这些选项都不是特别快。但是,不要试图发明自己更快的加密系统。一个"家庭酿造"加密系统比你意识到的要容易得多。