栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

rsa加密文件(java实现rsa加密解密文件)

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

rsa加密文件(java实现rsa加密解密文件)

没找到好的,还是自己写把

需要加一下依赖


    commons-codec
    commons-codec
    1.15

不BB废话,直上代码

import org.apache.commons.codec.binary.base64;

import javax.crypto.Cipher;
import java.nio.charset.StandardCharsets;
import java.security.*;
import java.security.spec.EncodedKeySpec;
import java.security.spec.PKCS8EncodedKeySpec;
import java.security.spec.X509EncodedKeySpec;

public class RSAUtil {

    private static final String RSA = "RSA";

    public static void main(String[] args) throws Exception {
        RsaKeyPair keyPair = generateKeyPair();
        System.out.println("公钥: " + keyPair.publicKey);
        System.out.println("私钥: " + keyPair.privateKey);

        String str = "曾特喵穷啊";
        System.out.println("明文: " + str);

        System.out.println("----------------------------");
        String encodePublic = encryptByPublicKey(keyPair.publicKey, str);
        System.out.println("公钥加密: " + encodePublic);
        String decodePrivate = decryptByPrivateKey(keyPair.privateKey, encodePublic);
        System.out.println("私钥解密: " + decodePrivate);

        System.out.println("----------------------------");
        String encodePrivate = encryptByPrivateKey(keyPair.privateKey, str);
        System.out.println("私钥加密: " + encodePrivate);
        String decodePublic = decryptByPublicKey(keyPair.publicKey, encodePrivate);
        System.out.println("公钥解密: " + decodePublic);
    }

    
    public static String encryptByPublicKey(String publicKeyStr, String data) throws Exception {
        Cipher cipher = cipherInstance(Cipher.ENCRYPT_MODE, false, publicKeyStr);
        byte[] result = cipher.doFinal(data.getBytes());
        return base64.encodebase64URLSafeString(result);
    }

    
    public static String decryptByPublicKey(String publicKeyStr, String data) throws Exception {
        Cipher cipher = cipherInstance(Cipher.DECRYPT_MODE, false, publicKeyStr);
        byte[] result = cipher.doFinal(base64.decodebase64(data));
        return new String(result, StandardCharsets.UTF_8);
    }

    
    public static String decryptByPrivateKey(String privateKeyStr, String data) throws Exception {
        Cipher cipher = cipherInstance(Cipher.DECRYPT_MODE, true, privateKeyStr);
        byte[] result = cipher.doFinal(base64.decodebase64(data));
        return new String(result, StandardCharsets.UTF_8);
    }

    
    public static String encryptByPrivateKey(String privateKeyStr, String data) throws Exception {
        Cipher cipher = cipherInstance(Cipher.ENCRYPT_MODE, true, privateKeyStr);
        byte[] result = cipher.doFinal(data.getBytes());
        return base64.encodebase64URLSafeString(result);
    }

    
    public static Cipher cipherInstance(int mode, boolean isPrivateKey, String keyStr) throws Exception {
        KeyFactory factory = KeyFactory.getInstance(RSA);
        EncodedKeySpec keySpec;
        Key key;
        if (isPrivateKey) {
            keySpec = new PKCS8EncodedKeySpec(base64.decodebase64(keyStr));
            key = factory.generatePrivate(keySpec);
        } else {
            keySpec = new X509EncodedKeySpec(base64.decodebase64(keyStr));
            key = factory.generatePublic(keySpec);
        }
        //
        Cipher cipher = Cipher.getInstance(RSA);
        cipher.init(mode, key);
        return cipher;
    }


    
    public static RsaKeyPair generateKeyPair() throws NoSuchAlgorithmException {
        return generateKeyPair(1024);
    }

    
    public static RsaKeyPair generateKeyPair(int keySize) throws NoSuchAlgorithmException {
        KeyPairGenerator kpg = KeyPairGenerator.getInstance(RSA);
        // 密钥长度
        kpg.initialize(keySize);
        // 生成密钥对
        KeyPair keyPair = kpg.generateKeyPair();
        // 公钥
        Key publicKey = keyPair.getPublic();
        String publicKeyStr = base64.encodebase64URLSafeString(publicKey.getEncoded());
        // 公钥
        Key privateKey = keyPair.getPrivate();
        String privateKeyStr = base64.encodebase64URLSafeString(privateKey.getEncoded());

        return new RsaKeyPair(publicKeyStr, privateKeyStr);
    }


    public static class RsaKeyPair {

        private final String publicKey;
        private final String privateKey;

        public RsaKeyPair(String publicKey, String privateKey) {
            this.publicKey = publicKey;
            this.privateKey = privateKey;
        }

        public String getPublicKey() {
            return publicKey;
        }

        public String getPrivateKey() {
            return privateKey;
        }
        
    }
}

觉得行,就点个赞

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/776853.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号