赞
踩
https://docs.oracle.com/javase/8/docs/technotes/guides/security/crypto/CryptoSpec.html
Java加密体系(Java Cryptography Architecture,JCA)是Java平台的一部分,它提供了一套用于加密、密钥生成和管理的API。JCA的设计目标是能够插入不同的加密服务提供者(Cryptography Service Providers,CSP),使得Java应用程序能够在各种加密算法和协议中灵活选择。
JCA的主要组件包括:
JCA还支持加密算法的参数设置,如密钥大小、迭代次数等,通过AlgorithmParameterSpec接口及其子类实现。
Java加密体系(JCA)支持多种加密算法,包括对称加密、非对称加密、哈希(散列)算法和数字签名算法。JCA支持的常见加密算法:
对称加密算法:
非对称加密算法:
哈希(散列)算法:
数字签名算法:
这些算法可以用于各种加密操作,如数据加密、密钥交换、哈希生成和数字签名。JCA通过Cipher类、Signature类、MessageDigest类等提供了对这些算法的支持。
随着加密技术的发展和安全性的变化,一些算法(如MD5和SHA-1)由于已不再被认为是安全的,因此在某些情况下可能不再推荐使用。
Demo示例
import javax.crypto.Cipher;
import javax.crypto.KeyGenerator;
import javax.crypto.SecretKey;
import javax.crypto.spec.SecretKeySpec;
import java.util.Base64;
public class JCACryptoExample {
public static void main(String[] args) throws Exception {
// 生成AES密钥
KeyGenerator keyGenerator = KeyGenerator.getInstance("AES");
keyGenerator.init(128); // 设置密钥大小为128位
SecretKey secretKey = keyGenerator.generateKey();
// 加密数据
Cipher cipher = Cipher.getInstance("AES");
cipher.init(Cipher.ENCRYPT_MODE, secretKey);
String plainText = "This is a secret message!";
byte[] encryptedBytes = cipher.doFinal(plainText.getBytes());
String encryptedBase64 = Base64.getEncoder().encodeToString(encryptedBytes);
System.out.println("Encrypted (Base64): " + encryptedBase64);
// 解密数据
cipher.init(Cipher.DECRYPT_MODE, secretKey);
byte[] decryptedBytes = cipher.doFinal(Base64.getDecoder().decode(encryptedBase64));
String decryptedText = new String(decryptedBytes);
System.out.println("Decrypted: " + decryptedText);
}
}
首先使用KeyGenerator
生成一个AES密钥。然后,我们创建一个Cipher
实例来初始化加密模式,并使用生成的密钥对字符串进行加密。加密后的数据被转换为Base64
编码的字符串以便于显示。接着,我们重新初始化Cipher
以解密模式,并使用相同的密钥对加密后的数据进行解密,最后将解密后的数据转换回原始字符串
名称 | 描述 | GitHub |
---|---|---|
crypto-js | MD5、SHA1、SHA2、SHA3、RIPEMD-160 的哈希散列,AES、DES、Rabbit、RC4、Triple DES 对称加解密 | https://github.com/brix/crypto-js |
JSEncrypt | 非对称RSA加解密,只支持浏览器,不支持Node | https://github.com/travist/jsencrypt |
node-rsa | 支持Node运行的RSA加解密库 | https://github.com/rzcoder/node-rsa |
Web Cryptography API | W3C制定的密码规范API,主流浏览器、Node15都已支持 | https://developer.mozilla.org/en-US/docs/Web/API/Web_Crypto_API |
opensm | 开源国密SM2/SM3/SM4算法,基于GmSSL,基于OpenSSL1.1.0,7年前(老) | https://github.com/zhangyantao/opensm |
TencentKonaSMSuite | 腾讯开源的国密套件SDK(Java) | https://github.com/tencent/TencentKonaSMSuite |
sm-crypto | 国密算法sm2、sm3和sm4的JavaScript实现,有关联java版 | https://github.com/JuneAndGreen/sm-crypto |
gm-crypto | 国密算法sm2、sm3和sm4的JavaScript实现 | https://github.com/byte-fe/gm-crypto |
sm-crypto-v2 | 国密算法 sm2、sm3 和 sm4 的 JavaScript 实现 | https://github.com/Cubelrti/sm-crypto-v2 |
GmSSL | 北京大学国密开源库,包含多个版本Java、JS、PHP、Go…,没有npm包 | https://github.com/guanzhi/GmSSL |
Tongsuo 铜锁 | 阿里开源的综合性基础密码库,功能比较全 | https://github.com/Tongsuo-Project/Tongsuo |
国产密码算法(国密算法)是指国家密码局认定的国产商用密码算法,在一般信息化系统开发中主要使用公开的SM2(非对称)、SM3(摘要)、SM4(对称)三类算法。
Base64是一种编码格式,并不属于加密,常用于数据传输、兼容性问题。Base64编码本质上是一种将二进制数据转成文本数据的方案,将一些不适合传输的数据内容进行编码来适合传输。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。