- 论坛徽章:
- 0
|
- package com;
- import java.security.Key;
- import java.security.KeyFactory;
- import java.security.KeyPair;
- import java.security.KeyPairGenerator;
- import java.security.NoSuchAlgorithmException;
- import java.security.PrivateKey;
- import java.security.PublicKey;
- import java.security.interfaces.RSAPrivateKey;
- import java.security.interfaces.RSAPublicKey;
- import java.security.spec.InvalidKeySpecException;
- import java.security.spec.PKCS8EncodedKeySpec;
- import java.security.spec.X509EncodedKeySpec;
- import java.util.HashMap;
- import java.util.Map;
- import javax.crypto.Cipher;
- public class RSACoder {
- //算法
- public static String Key_ALGORITHM="RSA";
- //私钥
- public static String Private_Key="RSAPrivateKey";
- //公钥
- public static String Public_Key="RSAPublicKey";
- //密钥长度
- public static int Key_Size=512;
- public static Map<String,Object> initKey() throws Exception{
- //实例化密钥生成器
- KeyPairGenerator keypairgenerator=KeyPairGenerator.getInstance(Key_ALGORITHM);
- //初始化
- keypairgenerator.initialize(Key_Size);
- //获得密钥对
- KeyPair keypair=keypairgenerator.generateKeyPair();
- //密钥
- RSAPrivateKey pritekey=(RSAPrivateKey)keypair.getPrivate();
- //公钥
- RSAPublicKey pubkey=(RSAPublicKey)keypair.getPublic();
- Map<String,Object> keymap=new HashMap<String,Object>(2);
- keymap.put(Private_Key, pritekey);
- keymap.put(Public_Key, pubkey);
- return keymap;
- }
- //获得密钥
- public static byte[] getPrivateKey(Map<String,Object>keymap){
- Key pritekey=(Key)keymap.get(Private_Key);
- return pritekey.getEncoded();
- }
- //获得公钥
- public static byte[] getPublicKey(Map<String,Object>keymap){
- Key pubkey=(Key)keymap.get(Public_Key);
- return pubkey.getEncoded();
- }
- //私钥加密
- public static byte[] encryptByPrivateKey(byte[] key,byte[] data) throws Exception{
- //实例化密钥材料
- PKCS8EncodedKeySpec pcs8spec=new PKCS8EncodedKeySpec(key);
- //实例化密钥工厂
- KeyFactory keyfactory=KeyFactory.getInstance(Key_ALGORITHM);
- //生成私钥
- PrivateKey pritekey=keyfactory.generatePrivate(pcs8spec);
- //私钥加密
- Cipher cipher=Cipher.getInstance(pritekey.getAlgorithm());
- cipher.init(Cipher.ENCRYPT_MODE,pritekey);
- return cipher.doFinal(data);
- }
- //公钥解密
- public static byte[] decryptByPublicKey(byte[] key,byte[] data) throws Exception{
- //实例化公钥材料
- X509EncodedKeySpec x509spec=new X509EncodedKeySpec(key);
- //实例化密钥工厂
- KeyFactory keyfactory=KeyFactory.getInstance(Key_ALGORITHM);
- //获得公钥
- PublicKey pubkey=keyfactory.generatePublic(x509spec);
- //对数据进行解密
- Cipher cipher=Cipher.getInstance(Key_ALGORITHM);
- cipher.init(Cipher.DECRYPT_MODE, pubkey);
- return cipher.doFinal(data);
- }
-
- }
复制代码 转自:http://yuncode.net/code/c_5136f1783044357
|
|