`

私钥加密

阅读更多

消息摘要只能检查消息的完整性,但是单向的,对明文消息并不能加密,要加密明文的消息的话,就要使用其他的算法,要确保机密性,我们需要使用私钥密码术来交换私有消息。

    这种最好理解,使用对称算法。比如: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"));
  }

}

 

分享到:
评论

相关推荐

    C#RSA私钥加密公钥解密

    私钥加密和公钥解密是RSA算法的核心特性,允许发送者使用接收者的公钥来加密数据,而只有持有对应私钥的接收者才能解密。在这个特定的案例中,`MyRSA.cs` 文件提供了一个实现,它使用了 `System.Numerics.BigInteger...

    C# .net版 RSA 公钥加密私钥解密 私钥加密公钥解密

    本教程主要讲解如何在C# .NET环境中使用RSA进行公钥加密和私钥解密,以及私钥加密和公钥解密的操作。 首先,让我们了解RSA的基本原理。RSA算法基于两个大素数的乘积,这个乘积作为公钥,而这两个大素数作为私钥。...

    基于.net framework4的RSA密钥生成和加密解密,包括私钥加密

    后来又传了个新的,叫做“包括私钥加密的RSA密钥生成和加密解密”基于.net Framework 4编,能够生成公钥私钥,直观看到(e,n)和(d,n),能够进行文本及文件加密解密(相关函数输入输出均为byte[],非常好用),...

    Java 公钥和私钥加密解密代码

    在Java编程语言中,公钥和私钥加密解密是一种重要的安全技术,广泛应用于网络通信、数据传输等领域。本文将详细解析如何使用Java实现公钥和私钥的加解密操作,以及相关的关键概念和代码示例。 首先,我们要了解公钥...

    基于.net的RSA私钥加密 公钥解密的源码--201903

    此源码项目“基于.net的RSA私钥加密 公钥解密的源码--201903”专注于利用C#语言来实现RSA算法的私钥加密和公钥解密功能。以下是对这个主题的详细解释。 RSA(Rivest-Shamir-Adleman)算法是1977年由Ron Rivest、Adi...

    Rsa 私钥加密 公钥解密

    这个压缩包文件的标题和描述提及了“Rsa 私钥加密 公钥解密”,这意味着我们将探讨如何使用RSA算法进行私钥加密和公钥解密的过程,以及在不同编程语言如JAVA、C#、PHP之间的互通性。 首先,RSA加密的基础是大数因子...

    RSA加密测试,私钥加密,公钥解密

    在"RSA加密测试,私钥加密,公钥解密"的场景中,我们将探讨如何使用私钥对数据进行加密,然后用公钥进行解密,以确保数据在传输过程中的安全。 私钥加密通常用于数字签名,因为它能证明数据是由特定的实体创建或...

    C# RSA私钥加密,公钥解密源码

    本主题聚焦于C#语言中实现RSA私钥加密和公钥解密的源码。 RSA算法的核心原理是生成一对密钥:公钥和私钥。公钥可以公开,用于加密数据,而私钥必须保密,用于解密数据。这样,即使加密后的数据被截获,没有私钥的...

    数字证书原理,公钥私钥加密原理

    数字证书和公钥私钥加密是当今网络安全中的基础元素。它们在保护数据传输、验证身份、以及确保信息交流的完整性和机密性方面发挥着关键作用。以下是对数字证书原理和公钥私钥加密原理的详细解读。 数字证书是一种...

    PYTHON Crypto库支持RSA,私钥加密公钥解密(修改版)

    PYTHON Crypto库支持RSA,私钥加密公钥解密, 文件名:RSA.PY 路径:Crypto\PublicKey\RSA.py 将此Crypto库中以上文件替换。 关于加解密方法看我的文章有写

    Go-gorsa支持rsa公钥加密私钥解密;支持rsa公钥解密私钥加密

    "Go-gorsa"是一个专门为Go语言设计的安全库,它专注于RSA(Rivest-Shamir-Adleman)加密算法的实现,允许用户进行公钥加密和私钥解密,以及公钥解密和私钥加密的操作。这一特性使得gorsa在确保信息安全方面具有很高...

    公钥私钥加密解密数字证书数字签名详解.docx

    ### 公钥私钥加密解密、数字证书与数字签名详解 #### 一、基础知识概述 在探讨公钥私钥加密解密、数字证书以及数字签名之前,我们需要先理解几个核心概念。 **1. 密钥对:** - 在非对称加密技术中,存在两种密钥...

    C#少有RSA私钥加密,公钥解密源码

    本篇文章将深入探讨C#中使用RSA私钥加密和公钥解密的核心概念、步骤以及源码实现。 RSA算法基于两个大素数的乘积,这个乘积作为公钥,而这两个素数的因式分解则构成了私钥。公钥可以公开,用于加密数据,而私钥必须...

    数字证书原理,公钥私钥加密原理1

    【数字证书原理与公钥私钥加密概述】 在信息技术领域,数据安全至关重要,尤其是在网络通信中。为了确保信息不被未经授权的用户访问或篡改,加密技术被广泛应用。本文将探讨数字证书的基本原理以及公钥私钥加密的...

    C# 非对称加密 私钥加密 公钥解密实现

    C# RSA非对称加密 实现私钥加密 公钥解密;可以用于生成授权码。 RSA生成一下随机值,然后都是用BigInteger类字符串跟字节数组互转

    基于.net的RSA私钥加密 公钥解密的源码

    当一方使用对方的公钥加密数据后,只有持有对应私钥的一方才能解密,这确保了数据的安全性。 在.NET框架中,我们可以使用RSACryptoServiceProvider类来处理RSA密钥对的生成、存储和使用。以下是一些关键步骤: 1. ...

    RSA.zip_C++ rsa私钥加密_rsa加密解密_公钥私钥_私钥加密

    这样,即使加密后的信息被截获,没有私钥也无法还原原始数据。 2. **大数因子分解**:RSA的安全性基于大数因子分解的难度。两个大素数相乘得到一个合数,分解这个合数找出原来的素数极其困难,因此可以用来构建加密...

    基于.net的RSA私钥加密 公钥解密的源码(0515).rar

    基于.NET框架实现RSA私钥加密和公钥解密是C#编程中常见的任务,这有助于保护敏感数据的安全传输。本文将详细介绍如何在C#中使用RSA加密和解密,并探讨相关知识点。 首先,理解RSA的核心概念至关重要。RSA是由Ron ...

Global site tag (gtag.js) - Google Analytics