⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 rc4.java

📁 QQ聊天工具的源代码
💻 JAVA
字号:
/*
 * RC4.java
 *
 * Created on 2007年12月21日, 下午7:03
 *
 * To change this template, choose Tools | Template Manager
 * and open the template in the editor.
 */
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.math.BigInteger;
import java.security.InvalidKeyException;
import java.security.Key;
import java.security.NoSuchAlgorithmException;
import java.security.SecureRandom;
import java.security.spec.InvalidKeySpecException;
import javax.crypto.BadPaddingException;
import javax.crypto.Cipher;
import javax.crypto.IllegalBlockSizeException;
import javax.crypto.KeyGenerator;
import javax.crypto.NoSuchPaddingException;
import javax.crypto.SecretKey;
import javax.crypto.SecretKeyFactory;
import javax.crypto.spec.SecretKeySpec;
/**
 *
 * @author deadknight
 */
public class RC4 {
    
    /** Creates a new instance of RC4 */
    public RC4() {}
    public static void main(String[] args) throws NoSuchAlgorithmException, NoSuchPaddingException, InvalidKeyException, IOException, IllegalBlockSizeException, BadPaddingException, InvalidKeySpecException 
    {
        //Key k = RC4.getKey();
       // byte b[] = k.getEncoded();
        String test = "testisperfect";
        System.out.println(RC4.keyGet());
        byte b[] = RC4.keyGet().getBytes();
        byte plain[] = test.getBytes();
        byte c[] = RC4.encrypt(plain,b);
        byte p[] = RC4.decrypt(c,b);
        
        System.out.println(new String(c)) ;
        System.out.println(new String(p));
        
    }
    public static byte[] encrypt(byte[] plaintext,byte[] keyBytes)
    {
        byte[] e = null;
        try
        {
            Key key = new SecretKeySpec(keyBytes,"RC4");
            Cipher enCipher = Cipher.getInstance("RC4");
            enCipher.init(Cipher.ENCRYPT_MODE,key);
            e = enCipher.doFinal(plaintext);           
        }
        catch(Exception ex)
        {
            ex.printStackTrace();
        }
        return e;
    }
    public static byte[] decrypt(byte[] ciphertext,byte[] keyBytes)
    {
        byte de[] = null;
        try
        {
            Key key = new SecretKeySpec(keyBytes,"RC4");
            Cipher deCipher = Cipher.getInstance("RC4");
            deCipher.init(Cipher.DECRYPT_MODE,key);
            de = deCipher.doFinal(ciphertext);
        }
        catch(Exception e)
        {
            e.printStackTrace();
        } 
        return de;
        
    }

    public static Key getKey()
    {
        Key key = null;
        try
        {
            SecureRandom sr = new SecureRandom();
            KeyGenerator kg = KeyGenerator.getInstance("RC4");
            kg.init(128,sr);
            key = kg.generateKey(); 
        }catch(Exception e)
        {
            e.printStackTrace();
        }
        return key;
    }
    public static String keyGet()
    {
        Key k = RC4.getKey();
        byte[] b = k.getEncoded();
	BigInteger big = new BigInteger(b);
        String s = big.toString();
        return s;
    }

}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -