私钥加密需要一个共享的密钥,那么如何传递密钥呢?web环境下,直接传递的话很容易被侦听到,幸好有了公钥加密的出现。公钥加密也叫不对称加密,不对称算法使用一对密钥对,一个公钥,一个私钥,使用公钥加密的数据,只有私钥能解开(可用于加密);同时,使用私钥加密的数据,只有公钥能解开(签名)。但是速度很慢(比私钥加密慢100到1000倍),公钥的主要算法有RSA,还包括Blowfish,Diffie-Helman等,jdk1.5种提供了对RSA的支持,是一个改进的地方:
package com.ijo.security;
import java.security.KeyPair;
import java.security.KeyPairGenerator;
import javax.crypto.Cipher;
public class PublicExample {
public static void main(String[] args) throws Exception {
byte[] plainText = "Hellow china".getBytes("UTF8");
// 构成一个RSA密钥
System.out.println("Start generating RSA key");
KeyPairGenerator keyGen = KeyPairGenerator.getInstance("RSA");
keyGen.initialize(1024);
KeyPair key = keyGen.generateKeyPair();
System.out.println("Finish generating RSA key");
// 获得一个RSA的Cipher类,使用公鈅加密
Cipher cipher = Cipher.getInstance("RSA/ECB/PKCS1Padding");
System.out.println("" + cipher.getProvider().getInfo());
System.out.println("Start encryption");
cipher.init(Cipher.ENCRYPT_MODE, key.getPublic());
byte[] cipherText = cipher.doFinal(plainText);
System.out.println("Finish encryption:");
System.out.println(new String(cipherText, "UTF8"));
// 使用私鈅解密
System.out.println("Start decryption");
cipher.init(Cipher.DECRYPT_MODE, key.getPrivate());
byte[] newPlainText = cipher.doFinal(cipherText);
System.out.println("Finish decryption:");
System.out.println(new String(newPlainText, "UTF8"));
}
}
分享到:
相关推荐
本教程主要讲解如何在C# .NET环境中使用RSA进行公钥加密和私钥解密,以及私钥加密和公钥解密的操作。 首先,让我们了解RSA的基本原理。RSA算法基于两个大素数的乘积,这个乘积作为公钥,而这两个大素数作为私钥。...
公钥加密技术是现代网络安全的基础,它涉及到两个密钥:一个公钥和一个私钥。公钥是可以公开的,任何人都可以获取,而私钥则必须保密,只由其所有者持有。这种技术允许数据发送者使用接收者的公钥对信息进行加密,...
### 公钥加密私钥解密与私钥加密公钥解密 在现代信息安全领域,公钥加密私钥解密及私钥加密后由公钥解密或验证的技术被广泛应用于数据保护、身份验证和安全通信等多个方面。下面将详细阐述这两种技术的基本原理及其...
在Java中实现RSA公钥加密,你需要先生成一对公钥和私钥。这个过程通常通过Java的`java.security.KeyPairGenerator`类来完成,指定`"RSA"`作为算法。生成的公钥可以安全地分享给其他人,而私钥必须保密。在示例中,...
本文将详细讲解Delphi环境下如何实现RSA加解密,并着重讨论其支持的公钥加密私钥解密以及私钥加密公钥解密的功能,同时涉及PKCS8和PKCS1两种秘钥格式。 RSA是一种基于大数因子分解困难性的加密算法,由Ron Rivest、...
Java 中使用公钥加密私钥解密原理实现 License 控制 Java 中使用公钥加密私钥解密原理实现 License 控制是指在 Java 应用程序中使用公钥加密、私钥解密机制来实现 License 文件的控制。这种机制可以用来限制系统的...
RSA公钥加密算法是1977年由Ron Rivest、Adi Shamirh和LenAdleman在(美国麻省理工学院)开发的。RSA取名来自开发他们三者的名字。RSA是目前最有影响力的公钥加密算法,它能够抵抗到目前为止已知的所有密码攻击,已被...
本文将深入探讨如何在C#编程环境下,利用RSA算法进行公钥加密和私钥解密,以此来确保数据的安全传输。我们将以Visual Studio 2017作为开发工具,通过分析代码实现过程来阐述这一知识点。 RSA(Rivest-Shamir-...
"C#-RSA非对称加密公钥加密.rar"压缩包提供的就是一个完整的C# RSA非对称加密实例,确保用户可以直接使用,无需额外寻找库文件或代码片段。 RSA算法由Ron Rivest、Adi Shamir和Leonard Adleman于1977年提出,其工作...
在公钥加密和私钥解密的机制下,数据的加密和解密使用的是不同的密钥,从而提供了更高的安全性和隐私保护。 公钥加密的基本原理源于两个数学难题,如大数因子分解(RSA算法)或离散对数问题(DSA、ECC算法)。简单...
深空公钥加密系统是一款功能强大的公钥加密工具,工具为绿色版本,简单易用,主要功能可帮助用户通过RSA512位-RSA8192位不等密钥长度的公钥来对电脑的文件实现加密操作,软件支持数字签名、数字验签、公钥加密、私钥...
**基于RSA的公钥加密与Java实现** RSA(Rivest-Shamir-Adleman)是一种非对称加密算法,广泛应用于信息安全领域,为数据传输提供安全保护。它的核心特点是拥有两个密钥:公钥和私钥。公钥可以公开,用于加密信息;...
在IT领域,尤其是在网络安全和数据传输中,公钥加密和私钥解密是一种常见的安全机制。这个名为"Java公钥加密私钥解密.rar"的压缩包文件包含了一个使用Java实现的公钥/私钥加密解密的示例。在这个案例中,开发者可能...
**公钥加密算法RSA在Java中的实现** RSA(Rivest-Shamir-Adleman)是一种非对称加密算法,广泛应用于网络安全领域,如数据加密、数字签名等。其核心概念是基于大数因子分解的困难性,使得只有拥有正确密钥的人才能...
公钥加密算法NTRU被认为是一种效率较高的加密算法,且更适合于RFID系统,因此提出的协议采用了NTRU公钥加密算法。对该协议的安全性和性能进行了比较分析,结果表明该协议可以为RFID系统提供更好的安全性,能为用户...
**公钥加密方案详解——RSA与OAEP** 公钥加密技术是现代密码学中的核心概念,它使得任何人都可以使用公开的密钥加密信息,而只有持有对应私钥的人才能解密。RSA是一种基于因子分解困难性的公钥加密算法,由Rivest、...
有朋友叫帮忙做有一个RSA加解密的帮助类,...由于C#RSA只支持公钥加密,私钥解密。而现在只能使用公钥加密,公钥解密,而且C#与Java并不互通,所以采用第三方类库 BouncyCastle来进行实现。并且实现了分段加密功能。
RSA为最常用的一种非对称方式的算法,这次封装的Utils类完成了公钥加密、私钥解密、私钥加签、公钥验签四种常用方法。