码迷,mamicode.com
首页 > 编程语言 > 详细

java 非对称加密RSA

时间:2018-06-20 22:42:39      阅读:209      评论:0      收藏:0      [点我收藏+]

标签:factor   vat   tee   java   key   string   获取   mis   algorithm   

package com.aarony.test;

import java.io.IOException;
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.spec.PKCS8EncodedKeySpec;
import java.security.spec.X509EncodedKeySpec;

import javax.crypto.Cipher;

import sun.misc.BASE64Decoder;
import sun.misc.BASE64Encoder;

public class EncryptionRSADemo2 {

    /**
     * 
     * 此方法描述的是:解密密匙
     * 
     * @author: Aarony
     * @version: 2018年6月20日 下午9:44:38
     */
    public static byte[] privateEncrypt(byte[] bytes, PrivateKey privateKey) throws Exception {
        Cipher cipher = Cipher.getInstance("RSA");
        cipher.init(Cipher.ENCRYPT_MODE, privateKey);
        return cipher.doFinal(bytes);
    }

    /**
     * 
     * 此方法描述的是:加密
     * 
     * @author: Aarony
     * @version: 2018年6月20日 下午9:44:47
     */
    public static byte[] publicEncrypt(byte[] bytes, PublicKey publicKey) throws Exception {
        Cipher cipher = Cipher.getInstance("RSA");
        cipher.init(Cipher.ENCRYPT_MODE, publicKey);
        return cipher.doFinal(bytes);
    }

    /**
     * 
     * 此方法描述的是:解密base64 位的密钥
     * 
     * @author: Aarony
     * @version: 2018年6月20日 下午9:40:51
     */
    public static PrivateKey string2PrivateKey(String privateStr) throws Exception {
        byte[] bytes = base642byte(privateStr);
        PKCS8EncodedKeySpec keySpec = new PKCS8EncodedKeySpec(bytes);
        KeyFactory keyFactory = KeyFactory.getInstance("RSA");
        return keyFactory.generatePrivate(keySpec);
    }

    /**
     * 
     * 此方法描述的是:解密base64 位的公钥
     * 
     * @author: Aarony
     * @version: 2018年6月20日 下午9:40:51
     */
    public static PublicKey string2PublicKey(String pubStr) throws Exception {
        byte[] bytes = base642byte(pubStr);
        X509EncodedKeySpec keySpec = new X509EncodedKeySpec(bytes);
        KeyFactory keyFactory = KeyFactory.getInstance("RSA");
        return keyFactory.generatePublic(keySpec);
    }

    /**
     * 
     * 此方法描述的是:生成keypair
     * 
     * @author: Aarony
     * @version: 2018年6月20日 下午9:35:43
     * @throws NoSuchAlgorithmException
     */
    public static KeyPair getKeyPair() throws NoSuchAlgorithmException {
        KeyPairGenerator keyPairGenerator = KeyPairGenerator.getInstance("RSA");
        keyPairGenerator.initialize(512);
        return keyPairGenerator.generateKeyPair();
    }

    /**
     * 
     * 此方法描述的是:获取公钥
     * 
     * @author: Aarony
     * @version: 2018年6月20日 下午9:37:13
     */
    public static String getPublicKey(KeyPair keyPair) {
        PublicKey key = keyPair.getPublic();
        return byte2base64(key.getEncoded());
    }

    /**
     * 
     * 此方法描述的是:获取公钥
     * 
     * @author: Aarony
     * @version: 2018年6月20日 下午9:37:13
     */
    public static String getPrivateKey(KeyPair keyPair) {
        PrivateKey key = keyPair.getPrivate();
        return byte2base64(key.getEncoded());
    }

    /**
     * 
     * 此方法描述的是:base64 解码
     * 
     * @author: Aarony
     * @version: 2018年6月20日 下午9:16:57
     */
    public static byte[] base642byte(String base64) throws IOException {
        BASE64Decoder decoder = new BASE64Decoder();
        return decoder.decodeBuffer(base64);
    }

    /**
     * 
     * 此方法描述的是: base 64编码
     * 
     * @author: Aarony
     * @version: 2018年6月20日 下午9:15:14
     */
    public static String byte2base64(byte[] bytes) {
        BASE64Encoder base = new BASE64Encoder();
        return base.encode(bytes);
    }
}

 

java 非对称加密RSA

标签:factor   vat   tee   java   key   string   获取   mis   algorithm   

原文地址:https://www.cnblogs.com/wucaifang/p/9206261.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!