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

java编写非对称加密,解密,公钥加密,私钥解密,RSA,rsa

时间:2018-04-21 19:36:40      阅读:196      评论:0      收藏:0      [点我收藏+]

标签:algo   rac   img   字符   exce   生成   copy   viewer   inf   

非对称加密已经被评为加密标准,主要包含(公钥加密私钥解密,或者私钥加密公钥解密)本文主要讲解的是如何用java生成 公钥和私钥并且 进行字符串加密 和字符串解密
    技术分享图片

技术分享图片

技术分享图片

//如需要代码copy如下


import java.security.KeyPair;
import java.security.KeyPairGenerator;
import java.security.NoSuchAlgorithmException;
import java.security.PrivateKey;
import java.security.PublicKey;
import java.util.HashMap;
import java.util.Map;

import javax.crypto.Cipher;
import javax.crypto.NoSuchPaddingException;

import sun.applet.resources.MsgAppletViewer;
import sun.misc.BASE64Decoder;
import sun.misc.BASE64Encoder;

public class KeyRSA1 {
    //密钥对生成器
    private KeyPairGenerator keyPairGenerator;
    //密钥对 里面包含(公钥he 私钥)
    private KeyPair keyPair;
    //公钥对象
    private PublicKey publicKey;
    //私钥对象
    private PrivateKey privateKey;
    //加密解密通用类型  
    private String keyType = "RSA";
    /*** 构造函数
     * @param keySize 密钥长度取值范围(512-16384)建议1024或者2048 别整太长降低性能
     * @throws Exception*/
    public KeyRSA1(int keySize) throws Exception {
        // 1创建 keypairGengerator密钥生成器对象
        keyPairGenerator = KeyPairGenerator.getInstance(keyType);
        // 2指定密钥生成器的长度
        keyPairGenerator.initialize(keySize);
        // 3创建 keypair 根据密钥生成器获取密钥对 里面包含(公钥和私钥)
        keyPair = keyPairGenerator.genKeyPair();
        // 4 根据密钥对 创建 公钥
        publicKey = keyPair.getPublic();
        // 5 根据密钥对 创建 私钥
        privateKey = keyPair.getPrivate();
    }
    // 使用公??加密  
    public String encrypt(String str) throws Exception {
        //创建密钥类            keyType 为rsa
        Cipher cipher = Cipher.getInstance(keyType);
        // 指定密钥类是 加密 注意 CIPHER类ENCRYPT_MODE常量是 加密 publicKey公钥
        cipher.init(Cipher.ENCRYPT_MODE, publicKey);    
        //进行公钥加密处理
        byte[] bytes = cipher.doFinal(str.getBytes());
        BASE64Encoder encoder=new BASE64Encoder();
        //返回base64 编码加密之后的字符串
        return encoder.encode(bytes);
    }
    // 使用私??解密
    public String decrypt(String str) throws Exception {
        //创建密钥类            keyType 为rsa
        Cipher cipher = Cipher.getInstance(keyType);
        //指定密钥是解密类型的 Cipher DECRYPT_MODE 解密privateKey私钥
        cipher.init(Cipher.DECRYPT_MODE, privateKey);
        BASE64Decoder decoder=new BASE64Decoder();
        //进行base64解密
        byte[] bytes1=decoder.decodeBuffer(str);
        //私钥解密
        byte[] bytes = cipher.doFinal(bytes1);
        //得到结果是字节数组 把字节数组编程字符串返回解密后的字符串
        return new String(bytes);
    }



}

 

 

 

 

 

 

 

//测试类代码copy如下

 


    public static void main(String[] args) {
        try {

            KeyRSA1 key = new KeyRSA1(1024);
            String str = "数据加密内容";
            System.out.println("要加密的内容是===" + str);
            String encryptResult = key.encrypt(str);
            System.out.println("加密后的秘文是===" + encryptResult);
            String decryptResult = key.decrypt(encryptResult);
            System.out.println("解密后的数据是===" + decryptResult);

        } catch (Exception e) {
            e.printStackTrace();
        }

    }

 

java编写非对称加密,解密,公钥加密,私钥解密,RSA,rsa

标签:algo   rac   img   字符   exce   生成   copy   viewer   inf   

原文地址:https://www.cnblogs.com/langjunnan/p/8902288.html

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