`

Java加密/解密之非对称加密算法

阅读更多

比较常见的是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加密/解密技术

    Java中常见的对称加密算法有DES(Data Encryption Standard)、3DES(Triple DES)、AES(Advanced Encryption Standard)等。例如,AES提供了128位、192位和256位的密钥长度,具有较高的安全性。 2. **非对称加密...

    qt5AES加密,ES加密/解密算法是一种可逆的对称加密算法,这类算法在加密和解密时使用相同的密钥,或是使用两个可以简单地相互推

    AES是一种广泛使用的对称加密算法,以其高效和安全性著称。"ES加密/解密算法"可能是描述错误,通常指的是AES算法在Elasticsearch(ES)中的应用,因为标签提到了"Elasticsearch",而且在安全领域,Elasticsearch也会...

    Hi3520/Hi3515 CIPHER API参考 加密/解密

    1. **DES (Data Encryption Standard)**:一种使用56位密钥的传统对称加密算法。 2. **3DES (Triple DES)**:为了克服DES的安全性问题而设计的一种加密方法,通过三次使用DES算法提高安全性。 3. **AES (Advanced ...

    基于SM2算法的加密/解密/签名/验签 , SM3算法的摘要计算 , SM4算法的对称加密/解密 , 以及相应算法的公私钥

    sm3 基于SM2算法的加密/解密/签名/验签 , SM3算法的摘要计算 , SM4算法的对称加密/解密 , 以及相应算法的公私钥

    流加密/解密算法

    此外,还需要注意加密算法的选择,如AES(高级加密标准)是一个广泛使用的对称加密算法,而RSA等非对称加密算法则适用于秘钥交换和数字签名。 总结来说,Java提供的流加密和解密机制允许开发者在处理大数据时高效地...

    java编写的加密解密工具,有对称加密和非对称加密

    Java中常见的非对称加密算法包括RSA(Rivest-Shamir-Adleman)、DSA(Digital Signature Algorithm)和ECC(Elliptic Curve Cryptography)。RSA是一种广泛使用的非对称加密算法,它基于大素数分解的困难性,适用于...

    AES加密/解密算法,基于MFC下的 VC6.0

    AES(Advanced Encryption Standard)是目前广泛应用的一种对称加密算法,由NIST(美国国家标准与技术研究院)在2001年确立,替代了之前的DES(Data Encryption Standard)。它以其高效性和安全性,在信息安全领域中...

    java使用AES加密/解密文件

    AES全称为Advanced Encryption Standard,是一种对称加密算法,它在信息安全领域中被广泛应用,因为其速度快、效率高且安全性强。Java通过Java Cryptography Extension (JCE) 提供了AES的支持。 首先,我们需要生成...

    关于Java中常用加密/解密方法的实现

    一、常用的加密/解密算法 1.Base64  严格来说Base64并不是一种加密/解密算法,而是一种编码方式。Base64不生成密钥,通过Base64编码后的... AES是现在对称加密算法中最流行的算法之一。 代码下载后,导入即可运行

    Java实现的RSA加密解密算法示例

    RSA加密解密算法是一种非对称加密算法,由Ron Rivest、Adi Shamir和Leonard Adleman在1978年发明。RSA算法基于大数分解难题的原理,使用公钥加密、私钥解密的方式实现信息的加密和解密。 知识点2:Java中RSA加密...

    C++加密/解密库

    1. **丰富的算法支持**:Botan不仅支持常见的加密算法,如AES、Blowfish、Twofish等,还提供了RSA、ECC等非对称加密算法,以及SHA-1、SHA-2、SHA-3等哈希函数。 2. **API设计**:Botan的C++ API设计友好,易于理解...

    密码学实验_对称加密算法DES_非对称加密算法RSA.pdf

    本实验报告主要涉及两种加密算法:对称加密算法DES(Data Encryption Standard)和非对称加密算法RSA。实验旨在帮助学生深入理解这两种算法的基本原理,并通过Python编程实现加密和解密过程。 ### **对称加密算法...

    RSA非对称加密算法

    RSA算法之所以重要,是因为它是第一个被广泛采用的非对称加密算法,它的出现为信息安全领域带来了革命性的进步。非对称加密技术与之前的对称加密技术有着本质的不同,它基于数学上的某些难题,比如大整数的因式分解...

    加密和解密文件

    加密过程中,常见的加密算法有对称加密和非对称加密。对称加密如DES、3DES、AES等,其特点是加密和解密使用相同的密钥,速度快,适用于大量数据的加密。而非对称加密,如RSA、ECC,采用一对公钥和私钥,公钥用于加密...

    常见加密算法方式(对称加密和非对称加密)

    非对称加密算法,又称公钥加密算法,其特点是加密和解密过程使用不同的密钥。通常,每个用户会拥有一对密钥:公钥和私钥。公钥可以公开分享给任何人,而私钥则需要保密。这种机制简化了密钥的分发问题,并且能够实现...

    java对称/非对称加解密的例子

    Java中常见的非对称加密算法有RSA(Rivest-Shamir-Adleman)和DSA(Digital Signature Algorithm)。 - **RSA**:RSA是最著名的非对称加密算法,它基于大整数因子分解的计算难题。RSA的公钥用于加密,私钥用于解密...

    基于Java语言的国密SM2/SM3/SM4算法库 , 包含加密/解密、签名/验签、摘要算法的实现代码和测试方法

    项目中包括SM2算法的加密/解密/签名/验签 , SM3算法的摘要计算 , SM4算法的对称加密/解密 , 以及相应算法的公私钥对的生成方法。 项目测试脚本使用 在项目中的test包下SecurityTestAll.java类中的main方法下有SM2/...

    Java实现AES加密和解密算法

    因此,通常会结合密钥管理策略,如使用密钥派生函数(KDFs)或密钥协商协议,以及使用非对称加密(如RSA)来安全地交换AES密钥。 总之,Java中的AES加密和解密涉及到密钥生成、密码器的使用以及数据的转换。在实现...

    RSA加密/解密实验

    AES(Advanced Encryption Standard)是对称加密算法,与RSA不同,它使用相同的密钥进行加密和解密,通常速度较快,但密钥管理复杂。 实验原理、方法和手段: 1. **非对称加密**:RSA的核心在于大素数的因式分解...

    Java RSA 加密/解密/签名 工具类

    RSA是一种非对称加密算法,基于大整数因子分解的困难性,提供了加密、解密以及数字签名的功能。下面将详细介绍Java中如何实现RSA的相关操作。 1. **RSA算法原理**: RSA算法由Ron Rivest、Adi Shamir和Leonard ...

Global site tag (gtag.js) - Google Analytics