比较常见的是RSA(适用于对少量数据加密)和DSA(一般用于数字签名中)。
Java使用RSA加密解密:
package com.security.example.example4;
import java.security.InvalidKeyException; import java.security.KeyPair; import java.security.KeyPairGenerator; import java.security.NoSuchAlgorithmException; import java.security.interfaces.RSAPrivateKey; import java.security.interfaces.RSAPublicKey;
import javax.crypto.BadPaddingException; import javax.crypto.Cipher; import javax.crypto.IllegalBlockSizeException; import javax.crypto.NoSuchPaddingException;
public class RSA { // 完成加密/解密工作 private Cipher cipher = null; // 公钥 private RSAPublicKey rsaPublicKey = null; // 私钥 private RSAPrivateKey rsaPrivateKey = null;
public RSA() { try { cipher = Cipher.getInstance("rsa"); KeyPairGenerator keyPairGen = KeyPairGenerator.getInstance("RSA"); KeyPair keypair = keyPairGen.genKeyPair(); rsaPrivateKey = (RSAPrivateKey) keypair.getPrivate(); rsaPublicKey = (RSAPublicKey) keypair.getPublic(); } catch (NoSuchAlgorithmException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (NoSuchPaddingException e) { // TODO Auto-generated catch block e.printStackTrace(); } }
/** * 使用私钥加密。 * @param msg:要加密的消息。 * @return加密后的密文 */ public byte[] encryp(String msg) { try { cipher.init(Cipher.ENCRYPT_MODE, rsaPrivateKey); byte[] encrypMsg = cipher.doFinal(msg.getBytes()); return encrypMsg; } catch (InvalidKeyException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (IllegalBlockSizeException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (BadPaddingException e) { // TODO Auto-generated catch block e.printStackTrace(); } return null; }
/** * 使用公钥解密。 * @param msg:密文 * @return解密后的原文 */ public byte[] decryp(byte[] msg) { try { cipher.init(Cipher.DECRYPT_MODE, rsaPublicKey); byte[] decrypMsg = cipher.doFinal(msg); return decrypMsg; } catch (InvalidKeyException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (IllegalBlockSizeException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (BadPaddingException e) { // TODO Auto-generated catch block e.printStackTrace(); } return null; } /** * @param args */ public static void main(String[] args) { String msg = "java安全编程——RSA"; System.out.println("原文是:" + msg); RSA rsa = new RSA(); byte[] enMsg = rsa.encryp(msg); System.out.println("加密后是:" + new String(enMsg)); byte[] deMsg = rsa.decryp(enMsg); System.out.println("解密后是:" + new String(deMsg));
}
}
输出: 原文是:java安全编程——RSA 加密后是:_c_3乿e3岥赾悤_�_Q敊怦i�_f�儠B橱狎�_駸1=脖X揖�_p�!\x7BJ�_�-nZ臑�摁_UB厕瓀犆}~S_宜腒馾�=_ 解密后是:java安全编程——RSA |
相关推荐
Java中常见的对称加密算法有DES(Data Encryption Standard)、3DES(Triple DES)、AES(Advanced Encryption Standard)等。例如,AES提供了128位、192位和256位的密钥长度,具有较高的安全性。 2. **非对称加密...
AES是一种广泛使用的对称加密算法,以其高效和安全性著称。"ES加密/解密算法"可能是描述错误,通常指的是AES算法在Elasticsearch(ES)中的应用,因为标签提到了"Elasticsearch",而且在安全领域,Elasticsearch也会...
1. **DES (Data Encryption Standard)**:一种使用56位密钥的传统对称加密算法。 2. **3DES (Triple DES)**:为了克服DES的安全性问题而设计的一种加密方法,通过三次使用DES算法提高安全性。 3. **AES (Advanced ...
sm3 基于SM2算法的加密/解密/签名/验签 , SM3算法的摘要计算 , SM4算法的对称加密/解密 , 以及相应算法的公私钥
此外,还需要注意加密算法的选择,如AES(高级加密标准)是一个广泛使用的对称加密算法,而RSA等非对称加密算法则适用于秘钥交换和数字签名。 总结来说,Java提供的流加密和解密机制允许开发者在处理大数据时高效地...
Java中常见的非对称加密算法包括RSA(Rivest-Shamir-Adleman)、DSA(Digital Signature Algorithm)和ECC(Elliptic Curve Cryptography)。RSA是一种广泛使用的非对称加密算法,它基于大素数分解的困难性,适用于...
AES(Advanced Encryption Standard)是目前广泛应用的一种对称加密算法,由NIST(美国国家标准与技术研究院)在2001年确立,替代了之前的DES(Data Encryption Standard)。它以其高效性和安全性,在信息安全领域中...
AES全称为Advanced Encryption Standard,是一种对称加密算法,它在信息安全领域中被广泛应用,因为其速度快、效率高且安全性强。Java通过Java Cryptography Extension (JCE) 提供了AES的支持。 首先,我们需要生成...
一、常用的加密/解密算法 1.Base64 严格来说Base64并不是一种加密/解密算法,而是一种编码方式。Base64不生成密钥,通过Base64编码后的... AES是现在对称加密算法中最流行的算法之一。 代码下载后,导入即可运行
RSA加密解密算法是一种非对称加密算法,由Ron Rivest、Adi Shamir和Leonard Adleman在1978年发明。RSA算法基于大数分解难题的原理,使用公钥加密、私钥解密的方式实现信息的加密和解密。 知识点2:Java中RSA加密...
1. **丰富的算法支持**:Botan不仅支持常见的加密算法,如AES、Blowfish、Twofish等,还提供了RSA、ECC等非对称加密算法,以及SHA-1、SHA-2、SHA-3等哈希函数。 2. **API设计**:Botan的C++ API设计友好,易于理解...
本实验报告主要涉及两种加密算法:对称加密算法DES(Data Encryption Standard)和非对称加密算法RSA。实验旨在帮助学生深入理解这两种算法的基本原理,并通过Python编程实现加密和解密过程。 ### **对称加密算法...
RSA算法之所以重要,是因为它是第一个被广泛采用的非对称加密算法,它的出现为信息安全领域带来了革命性的进步。非对称加密技术与之前的对称加密技术有着本质的不同,它基于数学上的某些难题,比如大整数的因式分解...
加密过程中,常见的加密算法有对称加密和非对称加密。对称加密如DES、3DES、AES等,其特点是加密和解密使用相同的密钥,速度快,适用于大量数据的加密。而非对称加密,如RSA、ECC,采用一对公钥和私钥,公钥用于加密...
非对称加密算法,又称公钥加密算法,其特点是加密和解密过程使用不同的密钥。通常,每个用户会拥有一对密钥:公钥和私钥。公钥可以公开分享给任何人,而私钥则需要保密。这种机制简化了密钥的分发问题,并且能够实现...
Java中常见的非对称加密算法有RSA(Rivest-Shamir-Adleman)和DSA(Digital Signature Algorithm)。 - **RSA**:RSA是最著名的非对称加密算法,它基于大整数因子分解的计算难题。RSA的公钥用于加密,私钥用于解密...
项目中包括SM2算法的加密/解密/签名/验签 , SM3算法的摘要计算 , SM4算法的对称加密/解密 , 以及相应算法的公私钥对的生成方法。 项目测试脚本使用 在项目中的test包下SecurityTestAll.java类中的main方法下有SM2/...
因此,通常会结合密钥管理策略,如使用密钥派生函数(KDFs)或密钥协商协议,以及使用非对称加密(如RSA)来安全地交换AES密钥。 总之,Java中的AES加密和解密涉及到密钥生成、密码器的使用以及数据的转换。在实现...
AES(Advanced Encryption Standard)是对称加密算法,与RSA不同,它使用相同的密钥进行加密和解密,通常速度较快,但密钥管理复杂。 实验原理、方法和手段: 1. **非对称加密**:RSA的核心在于大素数的因式分解...
RSA是一种非对称加密算法,基于大整数因子分解的困难性,提供了加密、解密以及数字签名的功能。下面将详细介绍Java中如何实现RSA的相关操作。 1. **RSA算法原理**: RSA算法由Ron Rivest、Adi Shamir和Leonard ...