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

📄 encryptanddecrypt.java

📁 QQ聊天工具的源代码
💻 JAVA
字号:
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;
import java.security.interfaces.RSAPrivateKey;
import java.security.interfaces.RSAPublicKey;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.math.BigInteger;
import java.security.*;
import java.security.KeyPair;
import java.security.KeyPairGenerator;
import java.security.interfaces.RSAPrivateKey;
import java.security.interfaces.RSAPublicKey;
import javax.crypto.*;
import javax.crypto.Cipher;
import javax.crypto.SecretKey;
import javax.crypto.SecretKeyFactory;
import javax.crypto.spec.SecretKeySpec;
import javax.crypto.Cipher;
import java.security.spec.RSAPublicKeySpec;
import java.security.spec.RSAPrivateKeySpec;
import java.security.spec.InvalidKeySpecException;

/*
 * EncryptAndDecrypt.java
 *
 * Created on 2007年12月16日, 下午8:25
 *
 * To change this template, choose Tools | Template Manager
 * and open the template in the editor.
 */

/**
 *
 * @author deadknight
 */
public class EncryptAndDecrypt {
	
	
     //**************************************************************************************************
    private static String rsaN = "BE211D1627D0FA0EDE557CB342256C9B6B7CEDB5A727BF732499393428EF2EC8704ADE733C65B234" +
                           "0B9C1DA282A57EC3B8352D6382E3DC32951EE741181A60FF";
    private static String rsaD = "463367CFF4679ECCBA9F09EA0E344F439B8E871E99577DC2FFF26B42AD12934CDE8A43617F97D277" +
                           "F856A42EA37D9936A2CE81351A432EB9B8A4DF818DA506F1";//D,N public key
    private static String rsaE = "10001";//E,N private key
    
    //***************************************************************************************************
    /** Creates a new instance of EncryptAndDecrypt */
    public EncryptAndDecrypt() 
    {
        //
    }
    public static String encryption(String s, String key,String type)
    {
	    String result = null;
	    byte aesKey[] = AES.getKey();//For aes
            
             
            BigInteger ss = new BigInteger(s.getBytes());
	    byte plaintext[] = ss.toByteArray();
        
        if(type.equals("AES"))
        {
           byte [] tmp = AES.encrpyt(plaintext,aesKey);
           BigInteger bi = new BigInteger(tmp);
           result = bi.toString();
        }
        else if(type.equals("RSA"))
        {
		    RSAPublicKey publicKey = null;
		    RSAPrivateKey privateKey = null;

		    try
		    {
			KeyFactory  keyFac = KeyFactory.getInstance("RSA");
		    
			RSAPublicKeySpec pubKeySpec = new RSAPublicKeySpec(new BigInteger(rsaN,16), new BigInteger(rsaD,16));
			publicKey = (RSAPublicKey) keyFac.generatePublic(pubKeySpec);
			RSAPrivateKeySpec priKeySpec = new RSAPrivateKeySpec(new BigInteger(rsaN,16), new BigInteger(rsaE,16));
		        privateKey= (RSAPrivateKey) keyFac.generatePrivate(priKeySpec);
		    }catch(Exception exe)
		    {
			    exe.printStackTrace();
		    }
                    
                    byte [] tmp = RSA.encrypt(publicKey,plaintext);
                    BigInteger bi = new BigInteger(tmp);
                    result = bi.toString();
        }
        else if(type.equals("RC4"))
        {
		    BigInteger big  = new BigInteger(key);
		    byte rckey[] = big.toByteArray();
		    byte tmp[] = RC4.encrypt(plaintext,rckey);
		    BigInteger bi = new BigInteger(tmp);
		    result = bi.toString();
        }
        else
        {
            result = "false";
        }
	return result;
    }
    public static String decryption(String s,String key,String type)
    {
	    String result = null;
	    byte aesKey[] = AES.getKey();
            BigInteger ss = new BigInteger(s);
	    byte ciphertext[] = ss.toByteArray();      
        if(type.equals("AES"))
        {
                    byte [] tmp = AES.decrpyt(ciphertext,aesKey);
                    result = new String(tmp);
        }
        else if(type.equals("RSA"))
        {
		    RSAPublicKey publicKey = null;
		    RSAPrivateKey privateKey = null;

		    try
		    {
			KeyFactory  keyFac = KeyFactory.getInstance("RSA");	    
			RSAPublicKeySpec pubKeySpec = new RSAPublicKeySpec(new BigInteger(rsaN,16), new BigInteger(rsaD,16));
			publicKey = (RSAPublicKey) keyFac.generatePublic(pubKeySpec);
			RSAPrivateKeySpec priKeySpec = new RSAPrivateKeySpec(new BigInteger(rsaN,16), new BigInteger(rsaE,16));
		        privateKey= (RSAPrivateKey) keyFac.generatePrivate(priKeySpec);
		    }catch(Exception exe)
		    {
			    exe.printStackTrace();
		    }
                    byte [] tmp = RSA.decrypt(privateKey,ciphertext);
                    result = new String(tmp);
        }
        else if(type.equals("RC4"))
        {
		    BigInteger big  = new BigInteger(key);
		    byte rckey[] = big.toByteArray();
		    byte tmp[] = RC4.decrypt(ciphertext,rckey);
		   // BigInteger bi = new BigInteger(tmp);
		   // result = bi.toString();
		    result = new String(tmp);
        }
        else
        {
		    result = "false";
        }
        return result;
    }
   
    
    public static void main(String args[])
    {
            String ke = RC4.keyGet();
            System.out.println(ke.length());
	    String plaintext = ke+"1111111111110111";
	    String ciphertext = null;
	    String destplaintext = null;
	    ciphertext = EncryptAndDecrypt.encryption(plaintext, ke, "RSA");
	    System.out.println("ciphertext: "+ciphertext);
	    destplaintext = EncryptAndDecrypt.decryption(ciphertext, ke, "RSA");
	    System.out.println("dest: "+destplaintext);

    }
    
}


⌨️ 快捷键说明

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