需求:
实现RSA非对称加密算法
实现:
public static class RSACoder {
public static final String KEY_ALGORITHM = "RSA";
private static final int KEY_SIZE = 512;
private static final String PUBLIC_KEY = "RSAPublicKey";
private static final String PRIVATE_KEY = "RSAPrivateKey";
public static Map<String, Object> initKey() throws Exception {
KeyPairGenerator keyPairGenerator = KeyPairGenerator
.getInstance(KEY_ALGORITHM);
keyPairGenerator.initialize(KEY_SIZE);
KeyPair keyPair = keyPairGenerator.generateKeyPair();
RSAPublicKey publicKey = (RSAPublicKey) keyPair.getPublic();
RSAPrivateKey privateKey = (RSAPrivateKey) keyPair.getPrivate();
Map<String, Object> keyMap = new HashMap<String, Object>();
keyMap.put(PUBLIC_KEY, publicKey);
keyMap.put(PRIVATE_KEY, privateKey);
return keyMap;
}
public static byte[] encryptByPrivateKey(byte[] data, byte[] key)
throws Exception {
PKCS8EncodedKeySpec pkcs8KeySpec = new PKCS8EncodedKeySpec(key);
KeyFactory keyFactory = KeyFactory.getInstance(KEY_ALGORITHM);
PrivateKey privateKey = keyFactory.generatePrivate(pkcs8KeySpec);
Cipher cipher = Cipher.getInstance(keyFactory.getAlgorithm());
cipher.init(Cipher.ENCRYPT_MODE, privateKey);
return cipher.doFinal(data);
}
public static byte[] encryptByPublicKey(byte[] data, byte[] key)
throws Exception {
KeyFactory keyFactory = KeyFactory.getInstance(KEY_ALGORITHM);
X509EncodedKeySpec x509KeySpec = new X509EncodedKeySpec(key);
PublicKey pubKey = keyFactory.generatePublic(x509KeySpec);
Cipher cipher = Cipher.getInstance(keyFactory.getAlgorithm());
cipher.init(Cipher.ENCRYPT_MODE, pubKey);
return cipher.doFinal(data);
}
public static byte[] decryptByPrivateKey(byte[] data, byte[] key)
throws Exception {
PKCS8EncodedKeySpec pkcs8KeySpec = new PKCS8EncodedKeySpec(key);
KeyFactory keyFactory = KeyFactory.getInstance(KEY_ALGORITHM);
PrivateKey privateKey = keyFactory.generatePrivate(pkcs8KeySpec);
Cipher cipher = Cipher.getInstance(keyFactory.getAlgorithm());
cipher.init(Cipher.DECRYPT_MODE, privateKey);
return cipher.doFinal(data);
}
public static byte[] decryptByPublicKey(byte[] data, byte[] key)
throws Exception {
KeyFactory keyFactory = KeyFactory.getInstance(KEY_ALGORITHM);
X509EncodedKeySpec x509KeySpec = new X509EncodedKeySpec(key);
PublicKey pubKey = keyFactory.generatePublic(x509KeySpec);
Cipher cipher = Cipher.getInstance(keyFactory.getAlgorithm());
cipher.init(Cipher.DECRYPT_MODE, pubKey);
return cipher.doFinal(data);
}
public static byte[] getPrivateKey(Map<String, Object> keyMap) {
Key key = (Key) keyMap.get(PRIVATE_KEY);
return key.getEncoded();
}
public static byte[] getPublicKey(Map<String, Object> keyMap)
throws Exception {
Key key = (Key) keyMap.get(PUBLIC_KEY);
return key.getEncoded();
}
}
相关推荐
RSA算法是一种非对称加密算法,它在信息安全领域有着广泛的应用,特别是在数据传输中的安全保护。这个RAR压缩包包含了一个名为“Rsa.java”的源代码文件,可能是用于演示如何在Java环境中实现RSA算法。另一个文件...
通过阅读《非对称加密算法 数字签名算法——RSA - 信息安全 - ITeye知识库频道.htm》这篇文章,可以深入理解这些概念,并了解在实际应用中如何使用Java实现这些功能。同时,文件中的`非对称加密算法 数字签名算法...
Java加密技术非对称加密算法RSA.doc
java rsa非对称加密算法3个实例源代码
在这篇文档中,我们将深入探讨非对称加密RSA的实现及其源代码,以及如何使用JAVA代码来实现。此外,我们还将介绍RSA加密算法的历史和基本原理,以及RSA加密算法在现代网络安全领域中的应用。通过本文档的学习,您将...
在现代密码技术中,根据密钥类型的不同,可以将其分为两类:对称加密算法(秘密钥匙加密)和非对称加密算法(公开密钥加密)。对称加密算法用来对敏感数据等信息进行加密,常用的算法包括 DES、3DES、AES 等。非对称...
java关于加密的算法demo代码(Base64加密\数字签名\对称加密算法\非对称加密算法\消息摘要算法) JAVA安全实现三种方式: 1.JDK 2.Commons Codec 3.Bouncy Castle 一。非对称加密算法: 1.DH 2.RSA 3.ELGamal 二。...
Java 非对称加密算法RSA实现详解是 Java 语言中的一种常用加密算法,主要用于保护数据的安全性。 RSA 算法是一种基于大数分解的加密算法,它的安全性取决于大数分解的难度。在 Java 中,RSA 加密算法可以用来实现...
非对称加密算法是信息安全领域中的重要组成部分,它在数据传输和存储中起着至关重要的作用。RSA(Rivest-Shamir-Adleman)算法是最早被广泛采用的非对称加密算法之一,其安全性基于大整数因子分解的困难性。本篇将...
在编程实践中,开发者可以利用各种库和工具来实现非对称加密,例如Python中的`cryptography`库,Java的`java.security`包,或者Node.js的`crypto`模块。这些工具提供了接口,使得开发人员能够方便地生成密钥对、加密...
RSA加密解密算法是一种非对称加密算法,由Ron Rivest、Adi Shamir和Leonard Adleman在1978年发明。RSA算法基于大数分解难题的原理,使用公钥加密、私钥解密的方式实现信息的加密和解密。 知识点2:Java中RSA加密...
RSA 算法是最常用的非对称加密算法之一。它的安全性取决于密钥的长度和安全性。 Java 中的 RSA 加密可以分为以下步骤: 1. 生成公钥和私钥:使用 KeyPairGenerator 生成一对公钥和私钥。 2. 将公钥传给客户端,私钥...
在Java中,非对称加密算法如RSA是一种广泛使用的安全技术,它允许数据在不安全的环境中进行加密和解密,同时保持数据的机密性。RSA算法基于两个不同的密钥:公钥和私钥。公钥是公开的,任何人都可以获取,用于加密...
Java中的RSA加密算法是一种非对称加密技术,广泛应用于网络安全领域,如数据传输加密、数字签名等。RSA是由Ron Rivest、Adi Shamir和Leonard Adleman三位科学家在1977年提出,因此得名。它基于大整数因子分解的困难...
RSA,由其发明者Ron Rivest、Adi Shamir和Leonard Adleman的名字首字母组成,是一种非对称加密算法,这意味着它使用一对密钥——公钥和私钥——进行加密和解密。 在Java中实现RSA加密,首先需要通过`java.security....
RSA是一种非对称加密算法,它是公钥密码学的一个重要里程碑。在Java中实现RSA加密算法,主要涉及以下几个核心概念和步骤: 1. **RSA原理**:RSA算法基于数论中的大数因子分解难题,由两个大素数P和Q相乘得到N,然后...
在实际开发过程中,需要注意性能和效率的问题,因为同态加密通常比传统的对称加密或非同态加密算法更为复杂,可能会消耗更多计算资源。因此,优化代码和选择合适的硬件环境对于实现高效且可靠的同态加密系统至关重要...
RSA是一种非对称加密算法,它基于大数分解难题来确保安全性。RSA算法涉及到两个密钥:公钥(用于加密数据)和私钥(用于解密数据)。这两个密钥数学上是相关的,但一个密钥很难从另一个密钥推导出来。 ### Java实现...
* 字符串格式的密钥在未在特殊说明情况下都为BASE64编码格式 * 由于非对称加密速度极其缓慢,一般文件不使用它来... * 非对称加密算法可以用来对对称加密的密钥加密,这样保证密钥的安全也就保证了数据的安全
RSA算法是一种非对称加密算法,由Ron Rivest、Adi Shamir 和 Leonard Adleman 在1977年提出,并以其三人的名字首字母命名。RSA算法的安全性基于大数分解的困难性,它在互联网安全传输方面发挥着重要作用。 - **密钥...