java实现非对称加密

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

这里写图片描述

非对称加密

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

公钥和私钥的关系是:

公钥和私钥一般都是成对出现,
如果你的消息使用公钥加密,那么需要该公钥对应的私钥才能解密;
如果你的消息使用私钥加密,那么需要该私钥对应的公钥才能解密.
这里写图片描述

java实现非对称加密

1 public static void main(String[] args) throws Exception { 2 //原文 3 String txt = "abc"; 4 System.out.println("需要加密的原始数据"+txt); 5 6 System.out.println(); 7 8 //获得密钥对Map 9 Map<String, byte[]> keyMap = getKeyMap(); 10 //获得公钥 11 String publicKeyStr = encryptBASE64(keyMap.get(PUBLIC_KEY)); 12 System.out.println("公钥\n\r"+publicKeyStr); 13 14 //获得密钥 15 String privateKeyStr = encryptBASE64(keyMap.get(PRIVATE_KEY)); 16 System.out.println("私钥\n\r"+privateKeyStr); 17 18 //将私钥规范 19 PrivateKey privateKey = restorePrivateKey(decryptBASE64(privateKeyStr)); 20 21 //将原文更利于私钥加密 22 byte[] encodedText = RSAEncode(privateKey, txt.getBytes("UTF-8")); 23 24 //私钥加密后的数据 25 String privateResult = byteArrayToHexString(encodedText); 26 System.out.println("加密后的256位数据\n\r"+privateResult); 27 28 PublicKey publicKey = restorePublicKey(decryptBASE64(publicKeyStr)); 29 // 公钥解密 30 System.out.println("公钥解密: " + RSADecode(publicKey, hexStringToByte(privateResult))); 31 }

运行结果图
这里写图片描述

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

点赞
收藏

评论区

加载中...

相关推荐

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

Oracle 分组与拼接字符串同时使用

SELECTT.,ROWNUMIDFROM(SELECTT.EMPLID,T.NAME,T.BU,T.REALDEPART,T.FORMATDATE,SUM(T.S0)S0,MAX(UPDATETIME)CREATETIME,LISTAGG(TOCHAR(

手写Java HashMap源码

HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程22

RSA加密、解密、签名、验签的原理及方法

一、RSA加密简介  RSA加密是一种非对称加密。可以在不直接传递密钥的情况下,完成解密。这能够确保信息的安全性,避免了直接传递密钥所造成的被破解的风险。是由一对密钥来进行加解密的过程,分别称为公钥和私钥。两者之间有数学相关,该加密算法的原理就是对一极大整数做因数分解的困难性来保证安全性。通常个人保存私钥,公钥是公开的(可能同时多人持有)。

DES与RSA加解密

加密,是以某种特殊的算法改变原有的信息数据,使得未授权的用户即使获得了已加密的信息,但因不知解密的方法,仍然无法了解信息的内容。大体上分为双向加密 和单向加密 ,而双向加密又分为对称加密 和非对称加密(有些资料将加密直接分为对称加密和非对称加密)。 双向加密大体意思就是明文加密后形成密文,可以通过算法还原成明文。而

OpenSSL和Python实现RSA Key公钥加密私钥解密

基于非对称算法的RSAKey主要有两个用途,数字签名和验证(私钥签名,公钥验证),以及非对称加解密(公钥加密,私钥解密)。本文提供一个基于OpenSSL和Python进行非对称加解密的例子。1\.OpenSSL实现非对称加解密1.1生成私钥,并导出公钥生成2048bit的PEM格式的RSAKey:Key.pem$openssl