Java、Android对字符串进行RC4加密、解密

我们在做软件的时候有时候传输的内容不希望被别人获取到,但是这很难做到,那么就希望就算被别人获取到了,也不希望知道这是啥意思,最起码也让他很难很难知道,所以我们需要一个只有我们自己可以认识的东西,就产生了RC4加密,这个不像MD5(如何获取MD5:http://blog.csdn.net/yanzhenjie1003/article/details/44887055),这个是可逆的,我加密的文字,我解密后就能看到原来的文字是什么样的了。

那么我提供一个想法,我们可以先把那段隐私的字符进行RC4加密,然后再把这些看起来是乱码的文字转成16进制的,那么看起来也舒服多了,别人破解起来也难上加难了,别人很想到这个,一般来说这样就够够的了

	/**
	 * RC4加密,解密
	 * @author YOLANDA
	 * @param aInput 要加密或者解密的文字
	 * @param aKey 加密或者解密的key
	 * @return
	 */
	public static String parseOrCreateRC4(String aInput, String aKey) {
		int[] iS = new int[256];
		byte[] iK = new byte[256];

		for (int i = 0; i < 256; i++)
			iS[i] = i;

		int j = 1;

		for (short i = 0; i < 256; i++) {
			iK[i] = (byte) aKey.charAt((i % aKey.length()));
		}

		j = 0;

		for (int i = 0; i < 255; i++) {
			j = (j + iS[i] + iK[i]) % 256;
			int temp = iS[i];
			iS[i] = iS[j];
			iS[j] = temp;
		}

		int i = 0;
		j = 0;
		char[] iInputChar = aInput.toCharArray();
		char[] iOutputChar = new char[iInputChar.length];
		for (short x = 0; x < iInputChar.length; x++) {
			i = (i + 1) % 256;
			j = (j + iS[i]) % 256;
			int temp = iS[i];
			iS[i] = iS[j];
			iS[j] = temp;
			int t = (iS[i] + (iS[j] % 256)) % 256;
			int iY = iS[t];
			char iCY = (char) iY;
			iOutputChar[x] = (char) (iInputChar[x] ^ iCY);
		}
		return new String(iOutputChar);
	}


你可能感兴趣的:(对字符串进行RC4加密解密)