java实现非对称加密

Wesley13
• 阅读 800

对称加密:加密和解密的过程使用的是相同的密钥

java实现非对称加密

非对称加密

与对称加密不同,非对称加密算法的加密和解密使用不同的两个密钥.这两个密钥就是我们经常听到的”公开密钥”(公钥)和”私有密钥”(私钥).

公钥和私钥的关系是:

公钥和私钥一般都是成对出现,
如果你的消息使用公钥加密,那么需要该公钥对应的私钥才能解密;
如果你的消息使用私钥加密,那么需要该私钥对应的公钥才能解密.
java实现非对称加密

java实现非对称加密

    public static void main(String[] args) throws Exception {
        //原文
        String txt = "abc";
        System.out.println("需要加密的原始数据"+txt);

        System.out.println();

        //获得密钥对Map
        Map<String, byte[]> keyMap = getKeyMap();
        //获得公钥
        String publicKeyStr = encryptBASE64(keyMap.get(PUBLIC_KEY));
        System.out.println("公钥\n\r"+publicKeyStr);

        //获得密钥
        String privateKeyStr = encryptBASE64(keyMap.get(PRIVATE_KEY));
        System.out.println("私钥\n\r"+privateKeyStr);

        //将私钥规范
        PrivateKey privateKey = restorePrivateKey(decryptBASE64(privateKeyStr));

        //将原文更利于私钥加密
        byte[] encodedText = RSAEncode(privateKey, txt.getBytes("UTF-8"));

        //私钥加密后的数据
        String privateResult = byteArrayToHexString(encodedText);
        System.out.println("加密后的256位数据\n\r"+privateResult);

        PublicKey publicKey = restorePublicKey(decryptBASE64(publicKeyStr));
        // 公钥解密
        System.out.println("公钥解密: " + RSADecode(publicKey, hexStringToByte(privateResult)));
    }

运行结果图
java实现非对称加密

具体的代码
https://github.com/liaobaoxin/password/blob/master/src/com/lbx/password/Cryptology.java

点赞
收藏
评论区
推荐文章
blmius blmius
3年前
MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1
文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s
待兔 待兔
4个月前
手写Java HashMap源码
HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程22
Wesley13 Wesley13
3年前
SSH加密原理、RSA非对称加密算法学习与理解
   首先声明一下,这里所说的SSH,并不是Java传统的三大框架,而是一种建立在应用层和传输层基础上的安全外壳协议,熟悉Linux的朋友经常使用到一个SSHSecureShellCilent的工具,本文也是基于此工具加密原理的学习,在SSH的加密原理中,使用到了RSA非对称加密算法,本文也一并做了学习和了解。  非对称加密算法
Wesley13 Wesley13
3年前
RSA加密、解密、签名、验签的原理及方法
一、RSA加密简介  RSA加密是一种非对称加密。可以在不直接传递密钥的情况下,完成解密。这能够确保信息的安全性,避免了直接传递密钥所造成的被破解的风险。是由一对密钥来进行加解密的过程,分别称为公钥和私钥。两者之间有数学相关,该加密算法的原理就是对一极大整数做因数分解的困难性来保证安全性。通常个人保存私钥,公钥是公开的(可能同时多人持有)。
Wesley13 Wesley13
3年前
DES与RSA加解密
加密,是以某种特殊的算法改变原有的信息数据,使得未授权的用户即使获得了已加密的信息,但因不知解密的方法,仍然无法了解信息的内容。大体上分为双向加密 和单向加密 ,而双向加密又分为对称加密 和非对称加密(有些资料将加密直接分为对称加密和非对称加密)。 双向加密大体意思就是明文加密后形成密文,可以通过算法还原成明文。而
Stella981 Stella981
3年前
OpenSSL和Python实现RSA Key公钥加密私钥解密
基于非对称算法的RSAKey主要有两个用途,数字签名和验证(私钥签名,公钥验证),以及非对称加解密(公钥加密,私钥解密)。本文提供一个基于OpenSSL和Python进行非对称加解密的例子。1\.OpenSSL实现非对称加解密1.1生成私钥,并导出公钥生成2048bit的PEM格式的RSAKey:Key.pem$openssl
Stella981 Stella981
3年前
Openssl生成RSA公私钥以及将公钥转换成C#支持的格式
Openssl生成RSA公私钥以及将公钥转换成C支持的格式1.RSA算法介绍RSA算法是一种非对称密码算法,所谓非对称,就是指该算法需要一对密钥,使用其中一个加密,则需要用另一个才能解密。RSA的算法涉及三个参数,n、e、d。其中,n是两个大质数p、q的积,n被称为模数,n的二进
Wesley13 Wesley13
3年前
JAVA_RSA_的加解密
RSA为非对称加密算法。数字签名的过程:1、对明文数据进行HASH加密,不可逆;2、对加密后的数据再用RSA的私钥进行二次加密。数字签名的验证过程:1、对明文数据进行HASH加密,不可逆;2、用RSA的公钥对数字签名后的数据进行解密;3、把1的结果和2的结果进行比较是否相等。RSA加密的过程和解密的过程都需要三步:加/解密、分组、填充。这三部分每
Wesley13 Wesley13
3年前
Go加密解密之DES
一、DES简介DES(DataEncryptionStandard)是对称加密算法,也就是加密和解密用相同的密钥。其入口参数有三个:key、data、mode。key为加密解密使用的密钥,data为加密解密的数据,mode为其工作模式。当模式为加密模式时,明文按照64位进行分组,形成明文组,key用于对数据加密,当模式为解密模式时,key用于对数据解
Easter79 Easter79
3年前
SpringCloud配置中心内容加密
从配置获取的配置默认是明文的,有些像数据源这样的配置需要加密的话,需要对配置中心进行加密处理。下面使用对称性加密来加密配置,需要配置一个密钥,当然也可以使用RSA非对称性加密,但对称加密比较方便也够用了,这里就以对称加密来配置即可。1、安装JCEJDK下的JCR默认是有长度限制的,需要替换没有长度限制的JCE版本。htt