`
lijunaccp
  • 浏览: 160490 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

Cipher加密解密

 
阅读更多
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加密解密等多种算法

    综上所述,CIPHER加密解密算法涉及的范围广泛,从基础的对称和非对称加密到复杂的数字签名和网络安全协议,都是确保数据安全的重要工具。在实际应用中,理解并正确使用这些技术对于保护信息安全至关重要。

    高效数据脱敏工具 - MyBatis-Cipher,基于MyBatis的数据库敏感信息加密解密方案

    MyBatis-Cipher 是一款基于 Java 语言开发的数据库敏感信息加密解密方案,专为 MyBatis 设计。它能够在数据进出数据库(DB)的过程中自动对敏感信息进行脱敏处理,极大提高了数据安全性,同时避免了开发者手动实现...

    SFCipher(加解密工具)

    目前这个工具支持对称加密算法(AES、3DES)、非对称加密算法(RSA)、单向散列算法(MD5、SHA1、CRC32)、Base64算法等,后期还会不定时新增别的算法,在使用过程中如有问题欢迎邮件给我,我会及时优化和反馈。

    打开android上 cipher 加密的db

    总的来说,Cipher加密的SQLite数据库在Android上提供了强大的数据保护,而解密和查看这些数据库则需要相应的工具和权限。对于开发者和安全研究人员而言,理解这个过程有助于提升应用程序的安全性和数据管理能力。在...

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

    Hi3520/Hi3515 CIPHER API提供了一种快速且可靠的加密解密解决方案,这对于构建安全可靠的应用程序和服务至关重要。 ### 支持的加密算法 该API支持以下几种加密算法: 1. **DES (Data Encryption Standard)**:一...

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

    Java实现的RSA加密解密算法示例 本文主要介绍了Java实现的RSA加密解密算法,结合实例形式分析了Java RSA加密解密算法的相关实现技巧。 知识点1:RSA加密解密算法简介 RSA加密解密算法是一种非对称加密算法,由Ron...

    Qt实现AES加密解密

    这个程序应当包含了上述知识点的具体应用,你可以通过阅读源代码、编译和运行来进一步理解和学习AES加密解密的实现细节。这个实战例程可以帮助开发者更好地掌握Qt环境下的加密解密操作,提高数据安全保护能力。

    JAVA数据加密解密的实例

    本实例将聚焦于JAVA数据加密解密的实践应用。 首先,让我们理解加密和解密的基本概念。加密是一种将明文(可读信息)转化为密文(不可读信息)的过程,以保护数据不被未经授权的用户访问。解密则是加密的逆过程,将...

    java和javascript之间的DES加密解密

    Java和JavaScript之间的DES加密解密是信息安全领域中的一个重要话题,主要涉及到数据的保护和通信的安全。DES(Data Encryption Standard)是一种古老的对称加密算法,尽管它在安全性上已不被视为最佳选择,但在某些...

    affine-caesar.rar_MOD_affine cipher_加密解密affine

    在提供的"affine caesar.cpp"文件中,很可能是实现Affine Caesar Cipher加密和解密算法的C++代码。通常,代码会包含以下几个部分: - 函数或方法用于计算模反元素d(即ad ≡ 1 mod p),这可以通过扩展欧几里得算法...

    Delphi AES 加密解密控件 Cipher_Component(1.0.0.0).rar

    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、...

    java加密解密算法类_Cipher

    这个"java加密解密算法类_Cipher"可能包含了上述所有或部分知识点的实现,通过阅读源代码,我们可以更深入地理解Java中加密解密的实际应用和细节。在实际开发中,这些知识对于构建安全的网络通信、数据库存储和数据...

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

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

    BAT批处理脚本-加密解密-解密.zip

    本文将深入探讨“BAT批处理脚本-加密解密-解密.zip”这一主题,以及如何利用它进行文件的加密与解密。 批处理脚本,也称为批处理文件或批处理程序,是Microsoft Windows操作系统中的一种命令行脚本语言。它由一系列...

    加密解密_C语言_加密解密_

    C语言作为基础的编程语言,虽然没有内置的加密库,但可以通过自定义算法或调用第三方库来实现加密解密功能。 C语言实现加密解密主要涉及以下几个知识点: 1. **基础算法**:常见的加密算法有 Caesar Cipher(凯撒...

    C#文件加密解密(完整项目)

    本项目"文件加密解密(完整项目)"专注于利用C#进行文件的安全处理,确保数据在传输和存储时的隐私性。 一、C#加密技术基础 C#中实现文件加密主要依赖于.NET Framework提供的加密类库,如System.Security....

    对密码进行加密解密

    "对密码进行加密解密" 在本篇文章中,我们将讨论如何实现对登录密码的加密解密,以确保项目安全。为了实现这一点,我们将使用 Java 语言和 DES 加密算法来实现密码的加密和解密。 首先,我们需要了解什么是 DES ...

    信息安全密码学中关键词加解密、Permutation cipher加解密、RSA加解密等

    在`keywordcipher_Encryption`和`keywordcipher_Decryption`函数中,我们分别实现了基于关键词的加密和解密过程,通过对明文或密文字符与替代表进行对应操作,实现信息的隐藏和恢复。 Permutation Cipher,又称为...

Global site tag (gtag.js) - Google Analytics