使用KeyPairGenertaor生成公钥和密钥,并保存在文件中

1、导入依赖
2、实现代码

 <dependencies>
        <dependency>
            <groupId>commons-io</groupId>
            <artifactId>commons-io</artifactId>
            <version>2.6</version>
        </dependency>
    </dependencies>
private static void generateKeyToFile(String algorithm, String pubPath, String priPath) throws Exception{
        //获取密钥对生成器
        KeyPairGenerator keyPairGenerator = KeyPairGenerator.getInstance(algorithm);
        //获取密钥对
        KeyPair keyPair = keyPairGenerator.generateKeyPair();
        //获取公钥
        PublicKey publicKey = keyPair.getPublic();
        //获取私钥
        PrivateKey privateKey = keyPair.getPrivate();
        //获取byte数组
        byte[] publicKeyEncode = publicKey.getEncoded();
        byte[] privateKeyEncoded = privateKey.getEncoded();
        //进行Base64编码
        String publicKeyStr = Base64.encode(publicKeyEncode);
        String privateKeyStr = Base64.encode(privateKeyEncoded);
        //保存文件
        FileUtils.writeStringToFile(new File(pubPath),publicKeyStr, Charset.forName("UTF-8"));
        FileUtils.writeStringToFile(new File(priPath),privateKeyStr, Charset.forName("UTF-8"));
    }
  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
Java可以通过使用密钥对来生成公钥和私钥,并使用公钥加密数据,私钥解密数据。以下是一个简单的Java程序,用于生成RSA密钥对,并使用公钥加密和私钥解密数据: ```java import java.security.*; public class RSAExample { public static void main(String[] args) throws Exception { // 生成RSA密钥KeyPairGenerator keyPairGenerator = KeyPairGenerator.getInstance("RSA"); keyPairGenerator.initialize(2048); // 指定密钥长度为2048位 KeyPair keyPair = keyPairGenerator.generateKeyPair(); PublicKey publicKey = keyPair.getPublic(); PrivateKey privateKey = keyPair.getPrivate(); // 使用公钥加密数据 String plainText = "Hello, world!"; Cipher cipher = Cipher.getInstance("RSA"); cipher.init(Cipher.ENCRYPT_MODE, publicKey); byte[] encryptedText = cipher.doFinal(plainText.getBytes()); // 使用私钥解密数据 cipher.init(Cipher.DECRYPT_MODE, privateKey); byte[] decryptedText = cipher.doFinal(encryptedText); System.out.println("原始数据:" + plainText); System.out.println("加密后数据:" + new String(encryptedText)); System.out.println("解密后数据:" + new String(decryptedText)); } } ``` 运行以上程序会输出以下结果: ``` 原始数据:Hello, world! 加密后数据:�N&�\�9-����k��O�Z�?���4�XĿ�������v�r�������F�w�w�7R 解密后数据:Hello, world! ``` 需要注意的是,RSA算法的密钥长度越长,加密强度越高,但加密速度越慢。在实际应用,需要根据安全要求和性能需求来选择密钥长度。同时,RSA算法只适用于加密长度小于等于密钥长度的数据,如果需要加密更大的数据,可以考虑使用对称加密算法。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值