首页 > 其他分享 >rsa加密解密

rsa加密解密

时间:2024-04-29 18:00:38浏览次数:27  
标签:加密 String CHARSET rsa 解密 Cipher static RsaUtil cipher

package com.hcp.config.rsa;

import org.bouncycastle.util.encoders.Base64;
import javax.crypto.Cipher;
import java.security.*;
public class RsaUtil {

    /**
     * 公钥
     */
    private static PublicKey publicKey;
    /**
     * 私钥
     */
    private static PrivateKey privateKey;
    /**
     * 编码
     */
    private static final String CHARSET = "UTF-8";

    /**
     * 初始化
     */
    static void init() throws NoSuchAlgorithmException {
        KeyPairGenerator keyPairGenerator = KeyPairGenerator.getInstance("RSA");
        // 设置密钥长度
        keyPairGenerator.initialize(2048);
        KeyPair keyPair = keyPairGenerator.generateKeyPair();
        publicKey = keyPair.getPublic();
        privateKey = keyPair.getPrivate();
    }

    /**
     * 加密
     */
    public static String encrypt(String plaintext, PublicKey publicKey) throws Exception {
        Cipher cipher = Cipher.getInstance("RSA");
        cipher.init(Cipher.ENCRYPT_MODE, publicKey);
        byte[] encryptedBytes = cipher.doFinal(plaintext.getBytes(CHARSET));
        return new String(Base64.encode(encryptedBytes), CHARSET);
    }

    /**
     * 解密
     */
    public static String decrypt(String ciphertext, PrivateKey privateKey) throws Exception {
        byte[] encryptedBytes = Base64.decode(ciphertext.getBytes(CHARSET));
        Cipher cipher = Cipher.getInstance("RSA");
        cipher.init(Cipher.DECRYPT_MODE, privateKey);
        byte[] decryptedBytes = cipher.doFinal(encryptedBytes);
        return new String(decryptedBytes, CHARSET);
    }

    public static void main(String[] args) throws Exception {
        RsaUtil.init();
        String plaintext = "Hello, World!";
        String ciphertext = RsaUtil.encrypt(plaintext, RsaUtil.publicKey);
        System.out.println(ciphertext);
        String decrypt = RsaUtil.decrypt(ciphertext, RsaUtil.privateKey);
        System.out.println(decrypt);
    }

}

 

标签:加密,String,CHARSET,rsa,解密,Cipher,static,RsaUtil,cipher
From: https://www.cnblogs.com/-llf/p/18166398

相关文章

  • 零知识证明与同态加密:隐私计算的双剑
    PrimiHub一款由密码学专家团队打造的开源隐私计算平台,专注于分享数据安全、密码学、联邦学习、同态加密等隐私计算领域的技术和内容。在数字时代,隐私保护已成为全球关注的焦点。隐私计算作为解决数据隐私问题的关键技术,其核心目标是在不泄露个人或敏感信息的前提下,实现数据的计......
  • 如何批量进行U盘加密?U盘加密的方法有哪些?
    批量进行U盘加密,可以使用专业的U盘批量加密工具,例如U盘内存卡批量只读加密专家。这种工具支持同时连接多个U盘进行加密,操作简便,加密速度快。在加密过程中,可以根据需要选择保护类型,如常规、隐藏等,以满足不同设备上的使用需求。U盘加密的方法主要有以下几种:使用计算机系统自带的加......
  • js逆向实战之企名片返回数据解密
    url:https://www.qimingpian.com/finosda/project/pinvestment分析过程抓流量包,发现回显数据都是加密的。想要找到解密逻辑,可以参考上一篇文章的思路,直接搜索拦截器。有五处,只需要看响应拦截器即可。第一处响应拦截器可以看到e.data,有经验的人大概就可以判断出来......
  • 基于混沌序列的图像加解密算法matlab仿真,并输出加解密之后的直方图
    1.算法运行效果图预览 2.算法运行软件版本matlab2022a 3.算法理论概述3.1混沌系统特性       混沌系统是一类具有确定性、非线性、初值敏感性、遍历性和伪随机性等特性的动力学系统。其主要特性包括: 确定性:混沌系统由一组确定性微分方程或差分方程描述......
  • js逆向实战之中国男子篮球职业联赛官方网站返回数据解密
    url:https://www.cbaleague.com/data/#/teamMain?teamId=29124分析过程看流量包,返回数据全是加密的字符串,要做的就是解密回显数据。由于这里的网址都比较特殊,里面都带有id号,所以通过url关键字去搜索不是一个很好的办法。看initiators,里面有很多异步传输。异步传输......
  • WIFI加密方式对无线速率的影响
    目录无线加密三种选择:WEP、WPA和WPA2测试平台和测试方法非加密和WEP加密测试结果差别巨大非加密条件下300M无线路由实测WEP加密条件下300M无线路由实测TKIP加密算法:WPA与WPA2成绩低迷WPA加密(TKIP加密算法)条件下300M无线路由实测WPA2加密(TKIP加密算法)条件下300M无线路由实测AE......
  • The 2018 ICPC Asia Qingdao Regional Programming Contest (The 1st Universal Cup,
    Preface久违地VP一场,虽然打的挺唐但勉强写出了8题前中期EFB三开三卡属实有点难受,而且B题这个套路大合集我和徐神两个人写了快200行也占用了一定机时但好在后面把卡住的题慢慢都写出来了,然后最后40min冲刺L题成功比较可惜的是I这个开场看的题没有再细想一步,感觉想到在线段树上D......
  • 陈畅亮搞的专利在Windows上利用加解密DLL模块对数据库连接字符串进行加解密
    陈畅亮搞的专利在Windows上利用加解密DLL模块对数据库连接字符串进行加解密  这种专利权人是公司,个人是发明人,专利年费是申请人先垫付,然后公司报销了,这个专利本身就不属于员工的这个是公司是专利权人, 使用权是公司,如果想要维持权利的话,需要缴纳年费,专利发明现在一个市......
  • 有关FTP服务器搭建于FTP加密技术的学习笔记
    FTP文件传输协议本篇是学习笔记,只整理相关链接,诚挚感谢各文章的博主。本文章不定期拓展内容。一、有关FTP的基本概念(一)、什么是FTP什么是FTPFTP的优势(二)、FTP扩展安全协议《FTP,SFTP,FTPS,SSL,TSL简介,区别,联系,使用场景说明》二、服务器搭建与客户端使用(......
  • js逆向实战之喜马拉雅Xm-Sign参数解密
    url:https://www.ximalaya.com/channel/11/分析过程抓包,关注有页面数据回显的数据包。该url的请求头中有个加密的参数,找到该参数的加密过程。由于该参数名比较不常见,可以直接全局搜索这个参数名。只有一处,打断点。切换页码,触发断点。非常直接,xm-sign是由d.getS......