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

使用密码来加密解密

 
阅读更多
package com.test;

import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
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;
import javax.crypto.SecretKeyFactory;
import javax.crypto.spec.PBEKeySpec;
import javax.crypto.spec.PBEParameterSpec;

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 Exception
	{
		Cipher cipher = Cipher.getInstance("PBEWithMD5AndDES");

		SecretKey key2 = SecretKeyFactory.getInstance("PBEWithMD5AndDES").generateSecret(new PBEKeySpec("123456789".toCharArray()));
		PBEParameterSpec parameterSpec = new PBEParameterSpec(new byte[]{1,2,3,4,5,6,7,8},100);
		//加密
		cipher.init(Cipher.ENCRYPT_MODE, key2, parameterSpec);
		
		byte[] result = cipher.doFinal("aab".getBytes());
		
		OutputStream 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 Exception
	{
		//解密
		Cipher cipher = Cipher.getInstance("PBEWithMD5AndDES");

		SecretKey key2 = SecretKeyFactory.getInstance("PBEWithMD5AndDES").generateSecret(new PBEKeySpec("123456789".toCharArray()));
		PBEParameterSpec parameterSpec = new PBEParameterSpec(new byte[]{1,2,3,4,5,6,7,8},100);
		cipher.init(Cipher.DECRYPT_MODE, key2,parameterSpec);
		
		InputStream 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();
	}
	
}

分享到:
评论

相关推荐

    对密码进行加密解密

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

    C++密码加密与解密C++密码加密与解密

    C++密码加密与解密C++密码加密与解密C++密码加密与解密C++密码加密与解密C++密码加密与解密C++密码加密与解密C++密码加密与解密C++密码加密与解密C++密码加密与解密C++密码加密与解密C++密码加密与解密C++密码加密与...

    易飞用户加密解密

    总结来说,“易飞用户加密解密”是针对用户数据提供的一套安全解决方案,通过高效的加密算法和严谨的密钥管理,确保用户数据在存储和传输过程中的安全。了解并掌握这一技术,有助于我们在日常工作中更好地保护个人...

    使用js对密码加密解密三种方式

    使用js对密码加密解密三种方式,包括md5、base64、sha1等主流加密方式。

    栅栏密码加密解密

    总的来说,"栅栏密码加密解密"是一个基于VB编写的程序,它实现了栅栏密码的加密和解密功能,适用于教学、研究或个人兴趣探索。开源特性使得用户可以自由地查看、学习和改进这个程序,进一步理解加密解密的基本原理...

    MATLAB 实现Caesar密码加密与解密

    在这个项目中,我们使用了MATLAB这一强大的数值计算和编程环境来实现Caesar密码的加密和解密过程。 MATLAB是一种高级的编程语言,它提供了丰富的数学函数和工具箱,适用于科学计算、数据分析以及工程应用。在MATLAB...

    pb密码加密解密代码f_passwd_encrypt

    本文将深入探讨“pb密码加密解密代码f_passwd_encrypt”这一主题,它涉及到的是使用Protocol Buffers(简称PB)进行密码的加密与解密操作。Protocol Buffers是Google开发的一种数据序列化协议,常用于结构化数据的...

    仿射密码加密与解密C++源程序

    仿射密码加密与解密C++源程序 仿射密码是一种简单的加密算法,它使用线性变换来进行加密和解密。下面我们将详细介绍仿射密码的加密和解密算法,并提供相应的C++源代码。 仿射密码的加密算法是一个线性算法,密钥...

    java字符串-用户名和密码-加密解密

    - **密码加密**:保护用户登录密码的安全。 - **自定义加密类**:可以根据项目需求自定义加密算法或策略。 #### 1.3 实现方式 该示例代码主要采用了DES(Data Encryption Standard)加密算法来实现字符串的加密与...

    hill密码加密和解密.rar

    本资源使用经典hill密码对输入的字符串进行加密和解密,加密矩阵可以根据自己的要求更改,加密过程中3个字母为一组,不足三个时,输出的解密后的字符串用哑文z补齐。下载解压后,导入MATLAB路径中,直接运行即可。...

    栅栏密码加密解密工具

    为了使用这个"栅栏密码加密解密工具",你需要熟悉加密和解密的过程,以及可能遇到的挑战,如不均匀的文本长度和未知的栅栏数。通过实践和实验,你可以更好地掌握这种方法,并在需要时应用到实际的加密和解密任务中。...

    易飞ERP用户密码加密 解密 清除工具

    1,易飞ERP用户密码加密 解密 清除工具 2,亲自测试可以使用

    matlab开发-使用matlabguiguide进行凯撒密码加密和解密

    本教程将详细介绍如何使用MATLAB GUI(图形用户界面)工具"matlabguiguide"来创建一个程序,该程序能够方便地执行凯撒密码的加解密操作。 首先,我们需要了解MATLAB GUI的基本构建。"matlabguiguide"是一个图形化...

    棋盘加密与凯撒加密解密C代码

    通过深入研究并实践这些代码,你可以更好地理解加密解密的工作原理,并为更高级的密码学概念打下坚实的基础。同时,这也提醒我们,尽管这些古典加密方法在现代密码学面前显得较为脆弱,但它们仍然是信息安全领域的...

    栅栏密码加密解密【工具】下载

    栅栏密码加密解密,26栏以上通过测试,不必整除栏数,可以任意加密解密。

    JAVA实现古典置换密码的加密解密.docx

    在代码中,我们使用了多种技术来实现古典置换密码的加密解密,包括: * 使用 BufferedReader 读取用户输入 * 使用 String 和 char 数组来存储明文和秘钥 * 使用嵌套循环将明文和秘钥存储到矩阵中 * 使用 ASCII 码对...

    凯撒密码的加密和解密

    凯撒密码是一种古典的加密算法,它的加密和解密过程都可以使用C语言来实现。下面我们将对凯撒密码的加密和解密过程进行详细的解释,并对提供的代码进行分析。 凯撒密码的加密过程 凯撒密码的加密过程可以分为以下...

    tomcat_连接池数据库密码加密解密方法

    ### Tomcat连接池数据库密码加密解密方法详解 在企业级应用中,数据库的安全性尤为重要。其中,数据库连接池作为应用程序与数据库之间的桥梁,扮演着关键角色。然而,当数据库的用户名和密码直接硬编码在配置文件...

    JAVA 使用数字证书加密解密文件

    总结来说,Java结合RSA算法和数字证书提供了强大的文件加密解密解决方案。通过生成密钥对、创建和管理数字证书,以及使用`Cipher`进行加解密操作,可以确保数据的安全传输和存储。了解并掌握这些技术,对于开发安全...

    凯撒密码加密解密工具(猫鼠梦开发)

    这个凯撒密码加密解密工具拥有两个频率,可以把一段文字进行加密处理,也可以通过加密时的频率用解密器解密,可用于想向谁发送私密消息,就可以使用加密器解密,具体功能详见安装后说明

Global site tag (gtag.js) - Google Analytics