非对称加密
非对称加密有一对密钥,公钥和私钥。可以用公钥加密,也可以用私钥加密。不过,公钥加密必须用私钥解密,私钥加密必须用公钥解密。如果不对应,则会报这样的异常
javax.crypto.BadPaddingException: Data must start with zero
代码如下:
- import java.security.KeyPair;
- import java.security.KeyPairGenerator;
- import javax.crypto.Cipher;
- publicclass test1 {
- //公钥加密
- publicbyte[] PublicEncrypt(KeyPair key,String str)throws Exception {
- Cipher cipher = Cipher.getInstance("RSA/ECB/PKCS1Padding");
- cipher.init(Cipher.ENCRYPT_MODE, key.getPublic());
- return cipher.doFinal(str.getBytes("UTF8"));
- }
- //公钥解密
- publicbyte[] PublicDECRYPT (KeyPair key,byte[] data)throws Exception {
- Cipher cipher = Cipher.getInstance("RSA/ECB/PKCS1Padding");
- cipher.init(Cipher.DECRYPT_MODE, key.getPublic());
- return cipher.doFinal(data);
- }
- //私钥加密
- publicbyte[] PrivateEncrypt (KeyPair key,String str)throws Exception {
- Cipher cipher = Cipher.getInstance("RSA/ECB/PKCS1Padding");
- cipher.init(Cipher.ENCRYPT_MODE, key.getPrivate());
- return cipher.doFinal(str.getBytes("UTF8"));
- }
- //私钥解密
- publicbyte[] PrivateDECRYPT(KeyPair key,byte[] data)throws Exception {
- Cipher cipher = Cipher.getInstance("RSA/ECB/PKCS1Padding");
- cipher.init(Cipher.DECRYPT_MODE, key.getPrivate());
- return cipher.doFinal(data);
- }
- publicstaticvoid main(String args[]) throws Exception {
- String str = "Hello World!";
- KeyPairGenerator keyGen = KeyPairGenerator.getInstance("RSA");
- keyGen.initialize(1024);
- KeyPair key = keyGen.generateKeyPair();
- test1 t = new test1();
- System.out.println("加密前原文:"+str);
- byte[] data = t.PublicEncrypt(key,str);
- System.out.println("私钥解密后:"+new String(t.PrivateDECRYPT(key,data)));
- byte[] data1 = t.PrivateEncrypt(key,str);
- System.out.println("公钥解密后:"+new String(t.PublicDECRYPT(key,data1)));
- }
- }
相关推荐
加密主要分为两种类型:对称加密和非对称加密。这两种加密方式各有其特点,适用于不同的场景。 **对称加密** 是一种历史悠久的加密方法,它依赖于一个相同的密钥进行数据的加密和解密。这种加密方式速度快,效率高...
在实际操作中,经常采用混合加密模式:利用非对称加密算法交换对称加密算法的密钥,再利用对称加密算法加密实际数据,从而结合两种加密算法的优点。 总之,加密算法是信息安全领域的基石,合理选择和使用加密算法...
登录时,用户的密码用明文传输...非对称加密算法常用RSA算法,秘钥使用base64编码成字符串,后端使用jdk8的标准API,前端使用jsencrypt.js进行RSA的对应操作。经过测试,本例中的前后端代码的加密解密计算结果是一致的。
RSA非对称加密算法是由罗纳德·李维斯特(Ron Rivest)、阿迪·萨莫尔(Adi Shamir)和伦纳德·阿德曼(Leonard Adleman)三位科学家在1977年提出的,这是他们在麻省理工学院共同研究的成果。RSA算法之所以重要,是...
本实验报告主要涉及两种加密算法:对称加密算法DES(Data Encryption Standard)和非对称加密算法RSA。实验旨在帮助学生深入理解这两种算法的基本原理,并通过Python编程实现加密和解密过程。 ### **对称加密算法...
非对称加密算法流程图,使用visio绘制。
非对称加密JAVA实现,实现对超长内容进行加密
本工具是用于golang编写的,用于rsa非对称加密技术实现的对字符串的加密解密工具,可以对文件进行加密解密(txt、docx、xls文档等)。对文档加密会对文档同目录下生成一个后缀名加.hh的文档。 操作说明: 一、对字符...
非对称加密算法和数字签名是信息技术中两个关键的安全概念,尤其在网络安全和数据保护方面起着至关重要的作用。在Java编程环境中,这些技术被广泛应用于实现安全通信、身份验证和数据完整性保护。 非对称加密算法,...
### 对称加密与非对称加密的介绍及区别 #### 一、对称加密技术概述 **对称加密**采用了对称密码编码技术,它的核心特点是文件加密和解密使用相同的密钥,即加密密钥也可以用作解密密钥。这种方法在密码学中被称为...
非对称加密技术详解 非对称加密技术是一种在现代信息安全领域中占据核心地位的加密方式,相较于传统的对称加密算法,它引入了一种全新的密钥管理机制,即使用一对密钥——公钥和私钥来进行加密和解密操作。这一技术...
非对称加密是一种重要的网络安全技术,它在C#编程中被广泛应用,特别是在文件的安全传输和存储方面。非对称加密的核心在于使用一对密钥:公钥和私钥,这两个密钥是数学上关联的,但不能互相推导。这种机制为数据提供...
java关于加密的算法demo代码(Base64加密\数字签名\对称加密算法\非对称加密算法\消息摘要算法) JAVA安全实现三种方式: 1.JDK 2.Commons Codec 3.Bouncy Castle 一。非对称加密算法: 1.DH 2.RSA 3.ELGamal 二。...
此外,非对称加密通常用于初始化对称加密的密钥,这样可以结合两者的优点:非对称加密的安全性和对称加密的效率。 在实际应用中,这个工具包可能还包括对文件或数据流的加密解密功能,以及对加密结果的Base64编码和...
非对称加密是一种重要的网络安全技术,它在保护数据的隐私和完整性方面发挥着关键作用。在Java编程环境中,非对称加密通常通过Java Cryptography Architecture (JCA) 和 Java Cryptography Extension (JCE) 来实现。...
Java非对称加密技术是一种基于数学算法的安全加密方式,它主要使用两个密钥:公钥和私钥。这种加密方式的核心在于,公钥可以公开给任何人,用于加密数据;而私钥必须保密,用于解密数据。这样,即使数据在传输过程中...
此外,非对称加密的计算复杂度比对称加密高,所以在大量数据加密时,通常会结合使用非对称加密来安全交换对称密钥,然后用对称密钥进行数据加密,这就是所谓的混合加密机制。 在编程实践中,开发者可以利用各种库和...
非对称加密技术研究 一篇关于非对称加密技术的介绍,详细!
### 对称与非对称加密详解 #### 一、基本概念 ##### 1.1 对称加密 在1976年之前,所有的加密技术都采用了一种模式,即发送方(甲方)和接收方(乙方)使用相同的密钥来进行加密和解密的过程。这种加密方式称为**...