[size=medium]
package com.simon.security;
import java.io.UnsupportedEncodingException;
import java.security.Key;
import java.security.KeyPair;
import java.security.KeyPairGenerator;
import java.security.NoSuchAlgorithmException;
import java.security.NoSuchProviderException;
import java.security.PrivateKey;
import java.security.PublicKey;
import java.security.SecureRandom;
import javax.crypto.Cipher;
public class JcePairTest {
public static void main(String[] args) throws NoSuchAlgorithmException, NoSuchProviderException, UnsupportedEncodingException{
KeyPairGenerator kpg = null;
kpg = KeyPairGenerator.getInstance("RSA");
kpg.initialize(1024, new SecureRandom());
KeyPair kp = kpg.generateKeyPair();
PrivateKey priKey = kp.getPrivate();
PublicKey pubKey = kp.getPublic();
byte[] encode = getEncCode(new String("hello").getBytes(), pubKey);
byte[] decode = getDesCode(encode, priKey);
System.out.println( encode );
System.out.println( new String(decode,"UTF-8") );
}
public static byte[] getEncCode(byte[] byteS, Key key) {
byte[] byteFina = null;
Cipher cipher;
try {
cipher = Cipher.getInstance("RSA");
cipher.init(Cipher.ENCRYPT_MODE, key);
byteFina = cipher.doFinal(byteS);
} catch (Exception e) {
e.printStackTrace();
} finally {
cipher = null;
}
return byteFina;
}
public static byte[] getDesCode(byte[] byteD , Key key) {
Cipher cipher;
byte[] byteFina = null;
try {
cipher = Cipher.getInstance("RSA");
cipher.init(Cipher.DECRYPT_MODE, key);
byteFina = cipher.doFinal(byteD);
} catch (Exception e) {
e.printStackTrace();
} finally {
cipher = null;
}
return byteFina;
}
}
[/size]
分享到:
相关推荐
JCE 包含了各种加密算法,如AES(高级加密标准)、RSA(公钥加密算法)、DES(数据加密标准)等,以及消息摘要算法如MD5和SHA家族。在Java中,JCE是处理加密、解密、数字签名和密钥管理的核心组件。 标题中的"jce-...
当前,国际上存在多种加密算法,其中DES(Data Encryption Standard)是最先发明且广泛应用的分组对称加密算法之一。DES使用56位密钥加密64位明文,输出64位密文。尽管DES在历史上曾经被穷举攻击成功破解,但在Java...
在Java编程环境中,AES(Advanced Encryption Standard)是一种广泛使用的对称加密算法,提供高安全性的数据加密服务。然而,有时用户可能会遇到一个常见问题,即Java的默认JDK 8可能不支持AES 256位加密。这个问题...
DES是一种对称加密算法,最初由IBM公司开发并在1977年被美国国家标准局采纳为官方标准。它使用56位密钥对64位数据块进行加密。尽管现在已经被更安全的AES算法取代,但在特定场景下,DES仍然是一种有效的加密手段。 ...
2. 选择加密算法:`sunjce_provider`支持多种算法,如RSA(非对称加密),AES(对称加密),DES(旧式的对称加密),以及哈希和消息认证码(如MD5,SHA-256等)。 3. 初始化密钥:根据选择的算法生成或加载密钥。非...
3. **非对称加密**:Bouncy Castle支持RSA、DSA等非对称加密算法,可用于数字签名和密钥交换。 4. **证书处理**:可以创建、解析和操作X.509证书,这对于构建安全的网络通信非常关键。 5. **哈希与消息摘要**:提供...
而AES(Advanced Encryption Standard)是一种强大的对称加密算法,常用于保护数据的安全性。本项目实现了利用SWING构建GUI来执行AES文件加密,且整个加密过程完全由Java语言自己实现,不依赖JDK内置的加密库。 AES...
Bouncy Castle提供了大量的加密算法,包括对称加密、非对称加密、散列函数、数字签名、密钥协议以及PKI(公钥基础设施)的支持。这里的"jdk16"指的是这个版本的库是为Java 1.6版本设计和编译的,而"1.46"则是该版本...
ASE加密算法基于对称密钥加密,它提供了高强度的安全性和快速的加密性能。该算法通常包括一个密钥生成过程、加密过程和解密过程。密钥是双方共享的秘密,用于在发送方加密数据并在接收方解密数据。由于ASE是专有的...
在Java中,加密服务提供者是一种实现了Java Cryptography Architecture (JCA) 和 Java Cryptography Extension (JCE) 规范的软件模块,它们提供了各种加密算法和服务,如对称加密、非对称加密、哈希函数、消息认证码...
**SM2** 是一种基于椭圆曲线密码学(ECC)的非对称加密算法,提供公钥和私钥对,用于数字签名、密钥交换和加密。在Spring Boot项目中,我们可以使用第三方库如`bc-sm2`来实现SM2加密。以下是一般步骤: 1. **添加...
1. **bcprov-jdk16-145-1.jar**:这是一个Bouncy Castle加密库的版本,用于支持非对称加密算法,如RSA,这是APNs认证过程中必需的。 2. **log4j-1.2.16.jar**:这是一个日志记录框架,用于记录程序运行过程中的信息...
总的来说,BouncyCastleProvider在Java环境中的作用是提供强大的加密服务,特别是对于AES这样的对称加密算法,它使得开发者能够轻松地在微信小程序等场景下实现安全的数据解密,确保用户信息的安全传输。在开发过程...
首先,RSA(Rivest-Shamir-Adleman)是一种非对称加密算法,它使用一对密钥:公钥和私钥。公钥可以公开给任何人,用于加密数据;而私钥必须保密,用于解密数据。在Web应用中,通常前端使用公钥加密数据,后端用私钥...
在信息安全中,数字签名是一种利用公钥加密技术实现的方法,它结合了消息摘要和非对称加密,能确保信息在传输过程中不被篡改,并能验证信息的来源。 在这个例子中,开发者可能会学习到如何使用Bouncy Castle库来...
DES是一种对称加密算法,它使用相同的密钥进行加密和解密操作。在Java中,我们可以使用Java Cryptography Extension (JCE)框架来实现DES加密。以下是一个简单的DESUtils工具类的实现: ```java package ...