RC4 加密解密

匿名 (未验证) 提交于 2019-12-03 00:21:02

一般服务器端会进行Base64处理下,所以客户端也要先Base64解密后,再使用RC4解密。

如:服务器端先RC4加密,然后对其加密后的byte[]做Base64加密处理,所以客户端就需要先Base64解密,然后RC4解密,顺序不可颠倒。

RC4加解密方法引用其他博客。

public class RC4Encrypt {      private final byte[] S = new byte[256];     private final byte[] T = new byte[256];     private final int keylen;      public RC4Encrypt(final byte[] key) {         if (key.length < 1 || key.length > 256) {             throw new IllegalArgumentException(                     "key must be between 1 and 256 bytes");         } else {             keylen = key.length;             for (int i = 0; i < 256; i++) {                 S[i] = (byte) i;                 T[i] = key[i % keylen];             }             int j = 0;             byte tmp;             for (int i = 0; i < 256; i++) {                 j = (j + S[i] + T[i]) & 0xFF;                 tmp = S[j];                 S[j] = S[i];                 S[i] = tmp;             }         }     }      public byte[] encrypt(final byte[] plaintext) {         final byte[] ciphertext = new byte[plaintext.length];         int i = 0, j = 0, k, t;         byte tmp;         for (int counter = 0; counter < plaintext.length; counter++) {             i = (i + 1) & 0xFF;             j = (j + S[i]) & 0xFF;             tmp = S[j];             S[j] = S[i];             S[i] = tmp;             t = (S[i] + S[j]) & 0xFF;             k = S[t];             ciphertext[counter] = (byte) (plaintext[counter] ^ k);         }         return ciphertext;     }      public byte[] decrypt(final byte[] ciphertext) {         return encrypt(ciphertext);     } } 
文章来源: RC4 加密解密
标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!