消息摘要只能检查消息的完整性,但是单向的,对明文消息并不能加密,要加密明文的消息的话,就要使用其他的算法,要确保机密性,我们需要使用私钥密码术来交换私有消息。
这种最好理解,使用对称算法。比如:A用一个密钥对一个文件加密,而B读取这个文件的话,则需要和A一样的密钥,双方共享一个私钥(而在web环境下,私钥在传递时容易被侦听):
使用私钥加密的话,首先需要一个密钥,可用javax.crypto.KeyGenerator产生一个密钥(java.security.Key),然后传递给一个加密工具(javax.crypto.Cipher),该工具再使用相应的算法来进行加密,主要对称算法有:DES(实际密钥只用到56位),AES(支持三种密钥长度:128、192、256位),通常首先128位,其他的还有DESede等,jdk1.5种也提供了对对称算法的支持,以下例子使用AES算法来加密:
package com.ijo.study;
import java.security.Key;
import javax.crypto.Cipher;
import javax.crypto.KeyGenerator;
public class PrivateExample {
public static void main(String[] args) throws Exception{
String text = "Hellow china ";
byte[] plainText=text.getBytes("UTF8");
//通过KeyGenerator形成一个key
System.out.println("Start generate AES key");
KeyGenerator keyGen=KeyGenerator.getInstance("AES");
keyGen.init(128);
Key key=keyGen.generateKey();
System.out.println("Finish generating DES key");
//获得一个私鈅加密类Cipher,ECB是加密方式,PKCS5Padding是填充方法
Cipher cipher=Cipher.getInstance("AES/ECB/PKCS5Padding");
System.out.println(""+cipher.getProvider().getInfo());
//使用私鈅加密
System.out.println("Start encryption:");
cipher.init(Cipher.ENCRYPT_MODE,key);
byte[] cipherText=cipher.doFinal(plainText);
System.out.println("Finish encryption:");
System.out.println(new String(cipherText,"UTF8"));
//使用私鈅解密
System.out.println("Start decryption:");
cipher.init(Cipher.DECRYPT_MODE,key);
byte[] newPlainText=cipher.doFinal(cipherText);
System.out.println("Finish decryption:");
System.out.println(new String(newPlainText,"UTF8"));
}
}
分享到:
相关推荐
私钥加密和公钥解密是RSA算法的核心特性,允许发送者使用接收者的公钥来加密数据,而只有持有对应私钥的接收者才能解密。在这个特定的案例中,`MyRSA.cs` 文件提供了一个实现,它使用了 `System.Numerics.BigInteger...
本教程主要讲解如何在C# .NET环境中使用RSA进行公钥加密和私钥解密,以及私钥加密和公钥解密的操作。 首先,让我们了解RSA的基本原理。RSA算法基于两个大素数的乘积,这个乘积作为公钥,而这两个大素数作为私钥。...
后来又传了个新的,叫做“包括私钥加密的RSA密钥生成和加密解密”基于.net Framework 4编,能够生成公钥私钥,直观看到(e,n)和(d,n),能够进行文本及文件加密解密(相关函数输入输出均为byte[],非常好用),...
在Java编程语言中,公钥和私钥加密解密是一种重要的安全技术,广泛应用于网络通信、数据传输等领域。本文将详细解析如何使用Java实现公钥和私钥的加解密操作,以及相关的关键概念和代码示例。 首先,我们要了解公钥...
此源码项目“基于.net的RSA私钥加密 公钥解密的源码--201903”专注于利用C#语言来实现RSA算法的私钥加密和公钥解密功能。以下是对这个主题的详细解释。 RSA(Rivest-Shamir-Adleman)算法是1977年由Ron Rivest、Adi...
这个压缩包文件的标题和描述提及了“Rsa 私钥加密 公钥解密”,这意味着我们将探讨如何使用RSA算法进行私钥加密和公钥解密的过程,以及在不同编程语言如JAVA、C#、PHP之间的互通性。 首先,RSA加密的基础是大数因子...
在"RSA加密测试,私钥加密,公钥解密"的场景中,我们将探讨如何使用私钥对数据进行加密,然后用公钥进行解密,以确保数据在传输过程中的安全。 私钥加密通常用于数字签名,因为它能证明数据是由特定的实体创建或...
本主题聚焦于C#语言中实现RSA私钥加密和公钥解密的源码。 RSA算法的核心原理是生成一对密钥:公钥和私钥。公钥可以公开,用于加密数据,而私钥必须保密,用于解密数据。这样,即使加密后的数据被截获,没有私钥的...
数字证书和公钥私钥加密是当今网络安全中的基础元素。它们在保护数据传输、验证身份、以及确保信息交流的完整性和机密性方面发挥着关键作用。以下是对数字证书原理和公钥私钥加密原理的详细解读。 数字证书是一种...
PYTHON Crypto库支持RSA,私钥加密公钥解密, 文件名:RSA.PY 路径:Crypto\PublicKey\RSA.py 将此Crypto库中以上文件替换。 关于加解密方法看我的文章有写
"Go-gorsa"是一个专门为Go语言设计的安全库,它专注于RSA(Rivest-Shamir-Adleman)加密算法的实现,允许用户进行公钥加密和私钥解密,以及公钥解密和私钥加密的操作。这一特性使得gorsa在确保信息安全方面具有很高...
### 公钥私钥加密解密、数字证书与数字签名详解 #### 一、基础知识概述 在探讨公钥私钥加密解密、数字证书以及数字签名之前,我们需要先理解几个核心概念。 **1. 密钥对:** - 在非对称加密技术中,存在两种密钥...
本篇文章将深入探讨C#中使用RSA私钥加密和公钥解密的核心概念、步骤以及源码实现。 RSA算法基于两个大素数的乘积,这个乘积作为公钥,而这两个素数的因式分解则构成了私钥。公钥可以公开,用于加密数据,而私钥必须...
【数字证书原理与公钥私钥加密概述】 在信息技术领域,数据安全至关重要,尤其是在网络通信中。为了确保信息不被未经授权的用户访问或篡改,加密技术被广泛应用。本文将探讨数字证书的基本原理以及公钥私钥加密的...
C# RSA非对称加密 实现私钥加密 公钥解密;可以用于生成授权码。 RSA生成一下随机值,然后都是用BigInteger类字符串跟字节数组互转
当一方使用对方的公钥加密数据后,只有持有对应私钥的一方才能解密,这确保了数据的安全性。 在.NET框架中,我们可以使用RSACryptoServiceProvider类来处理RSA密钥对的生成、存储和使用。以下是一些关键步骤: 1. ...
这样,即使加密后的信息被截获,没有私钥也无法还原原始数据。 2. **大数因子分解**:RSA的安全性基于大数因子分解的难度。两个大素数相乘得到一个合数,分解这个合数找出原来的素数极其困难,因此可以用来构建加密...
基于.NET框架实现RSA私钥加密和公钥解密是C#编程中常见的任务,这有助于保护敏感数据的安全传输。本文将详细介绍如何在C#中使用RSA加密和解密,并探讨相关知识点。 首先,理解RSA的核心概念至关重要。RSA是由Ron ...