依赖Apache的commons-codec-1.9.jar
:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136
| package utils;
import java.io.UnsupportedEncodingException; import java.security.GeneralSecurityException; import java.security.KeyFactory; import java.security.NoSuchAlgorithmException; import java.security.PrivateKey; import java.security.PublicKey; import java.security.Signature; import java.security.spec.InvalidKeySpecException; import java.security.spec.PKCS8EncodedKeySpec; import java.security.spec.X509EncodedKeySpec;
import javax.crypto.Cipher;
import org.apache.commons.codec.binary.Base64;
public class RSA {
public static final String SIGN_ALGORITHM = "SHA1WithRSA";
public static String sign(String content, String privateKey) throws GeneralSecurityException { PrivateKey priKey = getPrivateKey(privateKey); Signature signature = Signature.getInstance(SIGN_ALGORITHM); signature.initSign(priKey); signature.update(content.getBytes()); return Base64.encodeBase64String(signature.sign()); }
public static boolean verify(String content, String sign, String publicKey) throws GeneralSecurityException { PublicKey pubKey = getPublicKey(publicKey); Signature signature = Signature.getInstance(SIGN_ALGORITHM); signature.initVerify(pubKey); signature.update(content.getBytes()); return signature.verify(Base64.decodeBase64(sign)); }
public static String encrypt(String content, String publicKey) throws UnsupportedEncodingException, GeneralSecurityException { PublicKey pubKey = getPublicKey(publicKey); Cipher cipher = Cipher.getInstance("RSA"); byte[] byteContent = content.getBytes("utf-8"); cipher.init(Cipher.ENCRYPT_MODE, pubKey); byte[] result = cipher.doFinal(byteContent); return Base64.encodeBase64String(result); }
public static String decrypt(String content, String privateKey) throws GeneralSecurityException { PrivateKey priKey = getPrivateKey(privateKey); Cipher cipher = Cipher.getInstance("RSA"); byte[] byteContent = Base64.decodeBase64(content); cipher.init(Cipher.DECRYPT_MODE, priKey); byte[] result = cipher.doFinal(byteContent); return new String(result); }
private static PublicKey getPublicKey(String publicKey) throws GeneralSecurityException { KeyFactory keyFactory = KeyFactory.getInstance("RSA"); byte[] encodedKey = Base64.decodeBase64(publicKey); return keyFactory.generatePublic(new X509EncodedKeySpec(encodedKey)); }
private static PrivateKey getPrivateKey(String privateKey) throws GeneralSecurityException { PKCS8EncodedKeySpec priPKCS8 = new PKCS8EncodedKeySpec(Base64.decodeBase64(privateKey)); KeyFactory keyf = KeyFactory.getInstance("RSA"); return keyf.generatePrivate(priPKCS8); } }
|