?? encryptanddecrypt.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 + -