ByteStringUtil
/**
* Created by dubby on 16/4/29.
*/
public class ByteStringUtil {
public static String bytesToHexString(byte[] src) {
StringBuilder stringBuilder = new StringBuilder("");
if (src == null || src.length <= 0) {
return null;
}
for (int i = 0; i < src.length; i++) {
int v = src[i] & 0xFF;
String hv = Integer.toHexString(v);
if (hv.length() < 2) {
stringBuilder.append(0);
}
stringBuilder.append(hv);
}
return stringBuilder.toString();
}
public static byte[] hexStringToBytes(String hexString) {
if (hexString == null || hexString.equals("")) {
return null;
}
hexString = hexString.toUpperCase();
int length = hexString.length() / 2;
char[] hexChars = hexString.toCharArray();
byte[] d = new byte[length];
for (int i = 0; i < length; i++) {
int pos = i * 2;
d[i] = (byte) (charToByte(hexChars[pos]) << 4 | charToByte(hexChars[pos + 1]));
}
return d;
}
private static byte charToByte(char c) {
return (byte) "0123456789ABCDEF".indexOf(c);
}
}
RSAUtil
import javax.crypto.Cipher;
import javax.crypto.NoSuchPaddingException;
import java.security.*;
/**
* Created by dubby on 16/4/29.
*/
public class RSAUtil {
public static KeyPair getKeyPair(int keysize) {
KeyPairGenerator keyPairGenerator = null;
try {
keyPairGenerator = KeyPairGenerator.getInstance("RSA");
} catch (NoSuchAlgorithmException e) {
return null;
}
keyPairGenerator.initialize(keysize);
KeyPair keyPair = keyPairGenerator.generateKeyPair();
return keyPair;
}
public static KeyPair getKeyPair() {
return getKeyPair(1024);
}
public static String encrypt(PublicKey publicKey, String password) {
Cipher cipher = null;
byte[] cipherText = null;
try {
cipher = Cipher.getInstance("RSA");
cipher.init(Cipher.ENCRYPT_MODE, publicKey);
cipherText = cipher.doFinal(password.getBytes());
} catch (Exception e) {
return null;
}
return ByteStringUtil.bytesToHexString(cipherText);
}
public static String decrypt(PrivateKey privateKey, String cipherText) {
Cipher cipher = null;
byte[] text = ByteStringUtil.hexStringToBytes(cipherText);
byte[] password = null;
try {
cipher = Cipher.getInstance("RSA");
cipher.init(Cipher.DECRYPT_MODE, privateKey);
password = cipher.doFinal(text);
} catch (Exception e) {
return null;
}
return new String(password);
}
}
Test
import java.security.KeyPair;
/**
* Created by dubby on 16/4/29.
*/
public class Test {
public static void main(String[] args) {
KeyPair keyPair = RSAUtil.getKeyPair(512);
String password = "abcDEF123!@#";
String text = RSAUtil.encrypt(keyPair.getPublic(), password);
String result = RSAUtil.decrypt(keyPair.getPrivate(), text);
System.out.println(password);
System.out.println(text);
System.out.println(result);
}
}