package com.test;
import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.ByteArrayOutputStream;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.io.OutputStream;
import java.security.InvalidKeyException;
import java.security.NoSuchAlgorithmException;
import javax.crypto.BadPaddingException;
import javax.crypto.Cipher;
import javax.crypto.IllegalBlockSizeException;
import javax.crypto.KeyGenerator;
import javax.crypto.NoSuchPaddingException;
import javax.crypto.SecretKey;
public class CipherTest
{
public static void main(String[] args)
{
try
{
//secretEncrypt();
secretDecrypt();
}
catch (Exception e)
{
// TODO Auto-generated catch block
e.printStackTrace();
}
}
private static void secretEncrypt() throws NoSuchAlgorithmException,
NoSuchPaddingException, InvalidKeyException, FileNotFoundException,
IOException, IllegalBlockSizeException, BadPaddingException
{
Cipher cipher = Cipher.getInstance("AES");
SecretKey key = KeyGenerator.getInstance("AES").generateKey();
//加密
cipher.init(Cipher.ENCRYPT_MODE, key);
OutputStream os = new FileOutputStream("secret_key");
ObjectOutputStream oos = new ObjectOutputStream(os);
oos.writeObject(key);
oos.close();
os.close();
byte[] result = cipher.doFinal("aab".getBytes());
os = new FileOutputStream("secret_data");
BufferedOutputStream bos = new BufferedOutputStream(os);
bos.write(result);
bos.close();
os.close();
System.out.println(new String(result));
}
private static void secretDecrypt() throws NoSuchAlgorithmException,
NoSuchPaddingException, FileNotFoundException, IOException,
ClassNotFoundException, InvalidKeyException,
IllegalBlockSizeException, BadPaddingException
{
//解密
Cipher cipher = Cipher.getInstance("AES");
InputStream is = new FileInputStream("secret_key");
ObjectInputStream ois = new ObjectInputStream(is);
SecretKey key = (SecretKey)ois.readObject();
ois.close();
is.close();
cipher.init(Cipher.DECRYPT_MODE, key);
is = new FileInputStream("secret_data");
BufferedInputStream bis = new BufferedInputStream(is);
// ByteArrayOutputStream baos = new ByteArrayOutputStream();
//方法一:
// byte[] rs = new byte[1024];
// int length = 0;
// while((length = bis.read(rs)) != -1){
// baos.write(rs, 0, length);
// }
//方法二:
byte[] rs = new byte[bis.available()];
int length = bis.read(rs);
int total = 0;
while(total < bis.available()){
total += length;
length = bis.read(rs, total, bis.available() - total);
}
//System.out.println(new String(cipher.doFinal(baos.toByteArray())));
System.out.println(new String(cipher.doFinal(rs)));
// baos.close();
bis.close();
is.close();
}
}
分享到:
相关推荐
综上所述,CIPHER加密解密算法涉及的范围广泛,从基础的对称和非对称加密到复杂的数字签名和网络安全协议,都是确保数据安全的重要工具。在实际应用中,理解并正确使用这些技术对于保护信息安全至关重要。
MyBatis-Cipher 是一款基于 Java 语言开发的数据库敏感信息加密解密方案,专为 MyBatis 设计。它能够在数据进出数据库(DB)的过程中自动对敏感信息进行脱敏处理,极大提高了数据安全性,同时避免了开发者手动实现...
目前这个工具支持对称加密算法(AES、3DES)、非对称加密算法(RSA)、单向散列算法(MD5、SHA1、CRC32)、Base64算法等,后期还会不定时新增别的算法,在使用过程中如有问题欢迎邮件给我,我会及时优化和反馈。
总的来说,Cipher加密的SQLite数据库在Android上提供了强大的数据保护,而解密和查看这些数据库则需要相应的工具和权限。对于开发者和安全研究人员而言,理解这个过程有助于提升应用程序的安全性和数据管理能力。在...
Java实现的RSA加密解密算法示例 本文主要介绍了Java实现的RSA加密解密算法,结合实例形式分析了Java RSA加密解密算法的相关实现技巧。 知识点1:RSA加密解密算法简介 RSA加密解密算法是一种非对称加密算法,由Ron...
Hi3520/Hi3515 CIPHER API提供了一种快速且可靠的加密解密解决方案,这对于构建安全可靠的应用程序和服务至关重要。 ### 支持的加密算法 该API支持以下几种加密算法: 1. **DES (Data Encryption Standard)**:一...
这个程序应当包含了上述知识点的具体应用,你可以通过阅读源代码、编译和运行来进一步理解和学习AES加密解密的实现细节。这个实战例程可以帮助开发者更好地掌握Qt环境下的加密解密操作,提高数据安全保护能力。
本实例将聚焦于JAVA数据加密解密的实践应用。 首先,让我们理解加密和解密的基本概念。加密是一种将明文(可读信息)转化为密文(不可读信息)的过程,以保护数据不被未经授权的用户访问。解密则是加密的逆过程,将...
Java和JavaScript之间的DES加密解密是信息安全领域中的一个重要话题,主要涉及到数据的保护和通信的安全。DES(Data Encryption Standard)是一种古老的对称加密算法,尽管它在安全性上已不被视为最佳选择,但在某些...
Delphi 开发的AES 等对称加密解密控件 1.AES算法 AES-128-CBC、AES-192-CBC、AES-256-CBC; AES-128-CFB、AES-192-CFB、AES-256-CFB; AES-128-CFB1、AES-192-CFB1、AES-256-CFB1; AES-128-CFB8、AES-192-CFB8、...
在提供的"affine caesar.cpp"文件中,很可能是实现Affine Caesar Cipher加密和解密算法的C++代码。通常,代码会包含以下几个部分: - 函数或方法用于计算模反元素d(即ad ≡ 1 mod p),这可以通过扩展欧几里得算法...
这个"java加密解密算法类_Cipher"可能包含了上述所有或部分知识点的实现,通过阅读源代码,我们可以更深入地理解Java中加密解密的实际应用和细节。在实际开发中,这些知识对于构建安全的网络通信、数据库存储和数据...
在Java编程语言中,公钥和私钥加密解密是一种重要的安全技术,广泛应用于网络通信、数据传输等领域。本文将详细解析如何使用Java实现公钥和私钥的加解密操作,以及相关的关键概念和代码示例。 首先,我们要了解公钥...
C语言作为基础的编程语言,虽然没有内置的加密库,但可以通过自定义算法或调用第三方库来实现加密解密功能。 C语言实现加密解密主要涉及以下几个知识点: 1. **基础算法**:常见的加密算法有 Caesar Cipher(凯撒...
本项目"文件加密解密(完整项目)"专注于利用C#进行文件的安全处理,确保数据在传输和存储时的隐私性。 一、C#加密技术基础 C#中实现文件加密主要依赖于.NET Framework提供的加密类库,如System.Security....
"对密码进行加密解密" 在本篇文章中,我们将讨论如何实现对登录密码的加密解密,以确保项目安全。为了实现这一点,我们将使用 Java 语言和 DES 加密算法来实现密码的加密和解密。 首先,我们需要了解什么是 DES ...
在`keywordcipher_Encryption`和`keywordcipher_Decryption`函数中,我们分别实现了基于关键词的加密和解密过程,通过对明文或密文字符与替代表进行对应操作,实现信息的隐藏和恢复。 Permutation Cipher,又称为...
Java加密解密工具是开发过程中不可或缺的部分,尤其是在处理敏感数据时,确保数据的安全性至关重要。在Java中,我们可以使用各种库和内置API来实现加密和解密操作。本篇文章将深入探讨Java加密解密的核心概念、常用...