生成RSA密钥、保存到文件、从文件读取、加密、解密等操作。
java 代码
- import java.security.Key;
- import java.security.KeyFactory;
- import java.security.KeyPair;
- import java.security.KeyPairGenerator;
- import java.security.NoSuchAlgorithmException;
- import java.security.PrivateKey;
- import java.security.PublicKey;
- import java.security.SecureRandom;
- import java.security.interfaces.RSAPrivateKey;
- import java.security.interfaces.RSAPublicKey;
- import java.security.spec.InvalidKeySpecException;
- import java.security.spec.PKCS8EncodedKeySpec;
- import java.security.spec.X509EncodedKeySpec;
- import javax.crypto.Cipher;
- import org.apache.commons.configuration.ConfigurationException;
- import org.apache.commons.configuration.PropertiesConfiguration;
- import org.bouncycastle.jce.provider.BouncyCastleProvider;
-
- public class RSATest {
-
- public static void main(String[] args) {
- try {
- RSATest encrypt = new RSATest();
- String encryptText = "encryptText";
-
-
- KeyPair keyPair = encrypt.generateKey();
- RSAPrivateKey privateKey = (RSAPrivateKey) keyPair.getPrivate();
- RSAPublicKey publicKey = (RSAPublicKey) keyPair.getPublic();
-
- byte[] e = encrypt.encrypt(publicKey, encryptText.getBytes());
- byte[] de = encrypt.decrypt(privateKey, e);
- System.out.println(toHexString(e));
- System.out.println(toHexString(de));
- } catch (Exception e) {
- e.printStackTrace();
- }
- }
-
- public KeyPair generateKey() throws NoSuchAlgorithmException {
- KeyPairGenerator keyPairGen = KeyPairGenerator.getInstance("RSA");
- keyPairGen.initialize(1024, new SecureRandom());
-
- KeyPair keyPair = keyPairGen.generateKeyPair();
- return keyPair;
- }
-
- public void saveKey(KeyPair keyPair, String publicKeyFile,
- String privateKeyFile) throws ConfigurationException {
- PublicKey pubkey = keyPair.getPublic();
- PrivateKey prikey = keyPair.getPrivate();
-
-
- PropertiesConfiguration publicConfig = new PropertiesConfiguration(
- publicKeyFile);
- publicConfig.setProperty("PULIICKEY", toHexString(pubkey.getEncoded()));
- publicConfig.save();
-
-
- PropertiesConfiguration privateConfig = new PropertiesConfiguration(
- privateKeyFile);
- privateConfig.setProperty("PRIVATEKEY",
- toHexString(prikey.getEncoded()));
- privateConfig.save();
- }
-
-
-
-
-
-
-
-
-
-
- public Key loadKey(String filename, int type)
- throws ConfigurationException, NoSuchAlgorithmException,
- InvalidKeySpecException {
- PropertiesConfiguration config = new PropertiesConfiguration(filename);
- KeyFactory keyFactory = KeyFactory.getInstance("RSA",
- new BouncyCastleProvider());
-
- if (type == 0) {
-
- String privateKeyValue = config.getString("PULIICKEY");
- PKCS8EncodedKeySpec priPKCS8 = new PKCS8EncodedKeySpec(
- toBytes(privateKeyValue));
- PrivateKey privateKey = keyFactory.generatePrivate(priPKCS8);
- return privateKey;
-
- } else {
-
- String privateKeyValue = config.getString("PRIVATEKEY");
- X509EncodedKeySpec bobPubKeySpec = new X509EncodedKeySpec(
- toBytes(privateKeyValue));
- PublicKey publicKey = keyFactory.generatePublic(bobPubKeySpec);
- return publicKey;
- }
- }
-
-
-
-
-
-
- protected byte[] encrypt(RSAPublicKey publicKey, byte[] data) {
- if (publicKey != null) {
- try {
- Cipher cipher = Cipher.getInstance("RSA",
- new BouncyCastleProvider());
- cipher.init(Cipher.ENCRYPT_MODE, publicKey);
- return cipher.doFinal(data);
- } catch (Exception e) {
- e.printStackTrace();
- }
- }
- return null;
- }
-
-
-
-
-
-
- protected byte[] decrypt(RSAPrivateKey privateKey, byte[] raw) {
- if (privateKey != null) {
- try {
- Cipher cipher = Cipher.getInstance("RSA",
- new BouncyCastleProvider());
- cipher.init(Cipher.DECRYPT_MODE, privateKey);
- return cipher.doFinal(raw);
- } catch (Exception e) {
- e.printStackTrace();
- }
- }
-
- return null;
- }
-
- public static String toHexString(byte[] b) {
- StringBuilder sb = new StringBuilder(b.length * 2);
- for (int i = 0; i < b.length; i++) {
- sb.append(HEXCHAR[(b[i] & 0xf0) >>> 4]);
- sb.append(HEXCHAR[b[i] & 0x0f]);
- }
- return sb.toString();
- }
-
- public static final byte[] toBytes(String s) {
- byte[] bytes;
- bytes = new byte[s.length() / 2];
- for (int i = 0; i < bytes.length; i++) {
- bytes[i] = (byte) Integer.parseInt(s.substring(2 * i, 2 * i + 2),
- 16);
- }
- return bytes;
- }
-
- private static char[] HEXCHAR = { '0', '1', '2', '3', '4', '5', '6', '7',
- '8', '9', 'a', 'b', 'c', 'd', 'e', 'f' };
-
- }
分享到:
相关推荐
C#作为.NET框架下的主要编程语言,提供了丰富的类库支持RSA加密解密操作。本篇文章将深入探讨C#如何实现RSA加密解密,并结合Winform界面进行演示。 **1. RSA算法基础** RSA算法基于数论原理,包括大数因子分解的...
在本压缩包中,提供了RSA加密解密的工具——PRO_TDES_RSA.exe,这是一个执行程序,能够帮助用户对文件进行加密和解密操作。结合"RSATool工具简易操作指南 .doc",用户可以详细了解如何使用这个工具来保护他们的敏感...
RSA加密解密C#实现调用实例 public string RSAEncrypt(string xmlPublicKey, string m_strEncryptString) { try { byte[] PlainTextBArray; byte[] CypherTextBArray; string Result; System.Security....
RSA 加密解密网络课程设计 RSA 加密解密是计算机网络安全领域中的一种常用技术,旨在保护数据的机密性和完整性。本文将介绍 RSA 加密解密的基本原理、实现方法和技术要点。 一、RSA 加密解密原理 RSA 加密解密...
RSA加密解密是一种广泛应用于网络安全领域的非对称加密算法,由Ron Rivest、Adi Shamir和Leonard Adleman三位科学家在1977年提出,因此得名RSA。这种算法基于大整数因子分解的困难性,使得只有持有正确密钥的人才能...
Java实现的RSA加密解密算法示例 本文主要介绍了Java实现的RSA加密解密算法,结合实例形式分析了Java RSA加密解密算法的相关实现技巧。 知识点1:RSA加密解密算法简介 RSA加密解密算法是一种非对称加密算法,由Ron...
在易语言中调用JSEncrypt库来实现RSA加密解密,可以为易语言的应用增加一层安全防护。 JSEncrypt是一个JavaScript库,由Benjamin van Ryseghem开发,主要用于RSA加密操作,特别适用于前端与后端之间的安全通信。它...
本示例"Android RSA加密解密demo"提供了一个完整的实现过程,帮助开发者理解如何在Android平台上使用RSA进行数据的加密和解密操作。 RSA算法基于数论,它的核心思想是利用两个大素数的乘积作为公钥,这两个大素数的...
RSA加密解密算法是密码学中一种常用的加密算法,以 Ron Rivest、Adi Shamir 和 Leonard Adleman 三人命名。该算法基于大数分解问题的困难性,使用公钥加密和私钥解密的方式来保护数据的安全。 该算法的基本原理是:...
RSA加密解密是一种广泛应用于网络安全中的非对称加密算法,由Ron Rivest、Adi Shamir和Leonard Adleman三位科学家在1977年提出,因此得名RSA。这种算法基于大数因子分解的困难性,为数据提供了一种安全的传输方式。 ...
以上就是关于RSA加密解密算法的基本知识,以及在VC++环境下实现的概述。理解并掌握RSA算法对于深入学习网络安全和密码学至关重要。在具体编程实现时,还需要考虑到错误处理、输入输出的格式化以及代码的优化等问题。
本资源提供了RSA加密解密的源码,适用于学习和理解RSA算法的工作原理及其实现。 首先,RSA算法的核心原理基于大数的因式分解困难性。它由三位科学家Rivest、Shamir和Adleman于1977年提出,因此得名RSA。该算法包括...
总的来说,C# RSA加密解密工具是一个实用的开发辅助工具,帮助开发者在C#环境中方便地实现RSA加密和解密操作,同时考虑到了与其他语言(如JavaScript和Java)的兼容性,提高了数据安全传输的灵活性和便利性。
本文将深入探讨RSA加密和解密的基础知识以及如何在Unity中实现这一功能。 首先,RSA加密的核心原理是基于大整数因子分解的困难性。它生成一对密钥:公钥和私钥。公钥可以公开,用于加密;而私钥必须保密,用于解密...
RSA加密解密示例工程是一个专门针对Android平台设计的学习资源,旨在帮助开发者深入理解并实践RSA加密算法。RSA,全称Rivest-Shamir-Adleman,是一种非对称加密技术,广泛应用于网络安全、数据保护等领域。该示例...
RSA加密解密算法是一种非对称加密算法,由Ron Rivest、Adi Shamir和Leonard Adleman在1977年提出,是目前应用最广泛的公钥加密技术之一。该算法基于大数因子分解的困难性,即在两个大素数已知的情况下容易计算它们的...
- **性能**:RSA加密解密速度较慢,不适合对大量数据进行直接操作,通常用于加密会话密钥等小量数据,然后用会话密钥加密大量数据(如使用AES)。 - **编码**:在处理字符串时,确保正确处理字符编码,避免数据丢失...
**Swift中的RSA加密解密** RSA(Rivest-Shamir-Adleman)是一种广泛使用的非对称加密算法,它的核心特点在于使用一对密钥,一个为公钥,一个为私钥。在信息安全领域,这种特性使得RSA成为实现安全通信的重要工具。...
本教程将详细介绍如何在Android项目中实现RSA加密解密功能,并通过一个Demo来说明其具体步骤。 首先,我们需要了解RSA加密的基本原理。RSA是由Ron Rivest、Adi Shamir和Leonard Adleman三位科学家于1977年提出的,...
采用OpenSSL进行RSA加密解密,对Delphi-OpenSSL进行重构。 1、支持公钥加密、解密,私钥加密解密。 2、支持PKCS1和PKCS8两种密钥格式。 3、支持PKCS#1 v1.5、PKCS#1 OAEP、SSL v2等填充方式。 4、支持生成密钥对。 5...