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++密码加密与...
总结来说,“易飞用户加密解密”是针对用户数据提供的一套安全解决方案,通过高效的加密算法和严谨的密钥管理,确保用户数据在存储和传输过程中的安全。了解并掌握这一技术,有助于我们在日常工作中更好地保护个人...
使用js对密码加密解密三种方式,包括md5、base64、sha1等主流加密方式。
总的来说,"栅栏密码加密解密"是一个基于VB编写的程序,它实现了栅栏密码的加密和解密功能,适用于教学、研究或个人兴趣探索。开源特性使得用户可以自由地查看、学习和改进这个程序,进一步理解加密解密的基本原理...
在这个项目中,我们使用了MATLAB这一强大的数值计算和编程环境来实现Caesar密码的加密和解密过程。 MATLAB是一种高级的编程语言,它提供了丰富的数学函数和工具箱,适用于科学计算、数据分析以及工程应用。在MATLAB...
本文将深入探讨“pb密码加密解密代码f_passwd_encrypt”这一主题,它涉及到的是使用Protocol Buffers(简称PB)进行密码的加密与解密操作。Protocol Buffers是Google开发的一种数据序列化协议,常用于结构化数据的...
仿射密码加密与解密C++源程序 仿射密码是一种简单的加密算法,它使用线性变换来进行加密和解密。下面我们将详细介绍仿射密码的加密和解密算法,并提供相应的C++源代码。 仿射密码的加密算法是一个线性算法,密钥...
- **密码加密**:保护用户登录密码的安全。 - **自定义加密类**:可以根据项目需求自定义加密算法或策略。 #### 1.3 实现方式 该示例代码主要采用了DES(Data Encryption Standard)加密算法来实现字符串的加密与...
本资源使用经典hill密码对输入的字符串进行加密和解密,加密矩阵可以根据自己的要求更改,加密过程中3个字母为一组,不足三个时,输出的解密后的字符串用哑文z补齐。下载解压后,导入MATLAB路径中,直接运行即可。...
为了使用这个"栅栏密码加密解密工具",你需要熟悉加密和解密的过程,以及可能遇到的挑战,如不均匀的文本长度和未知的栅栏数。通过实践和实验,你可以更好地掌握这种方法,并在需要时应用到实际的加密和解密任务中。...
1,易飞ERP用户密码加密 解密 清除工具 2,亲自测试可以使用
本教程将详细介绍如何使用MATLAB GUI(图形用户界面)工具"matlabguiguide"来创建一个程序,该程序能够方便地执行凯撒密码的加解密操作。 首先,我们需要了解MATLAB GUI的基本构建。"matlabguiguide"是一个图形化...
通过深入研究并实践这些代码,你可以更好地理解加密解密的工作原理,并为更高级的密码学概念打下坚实的基础。同时,这也提醒我们,尽管这些古典加密方法在现代密码学面前显得较为脆弱,但它们仍然是信息安全领域的...
栅栏密码加密解密,26栏以上通过测试,不必整除栏数,可以任意加密解密。
在代码中,我们使用了多种技术来实现古典置换密码的加密解密,包括: * 使用 BufferedReader 读取用户输入 * 使用 String 和 char 数组来存储明文和秘钥 * 使用嵌套循环将明文和秘钥存储到矩阵中 * 使用 ASCII 码对...
凯撒密码是一种古典的加密算法,它的加密和解密过程都可以使用C语言来实现。下面我们将对凯撒密码的加密和解密过程进行详细的解释,并对提供的代码进行分析。 凯撒密码的加密过程 凯撒密码的加密过程可以分为以下...
### Tomcat连接池数据库密码加密解密方法详解 在企业级应用中,数据库的安全性尤为重要。其中,数据库连接池作为应用程序与数据库之间的桥梁,扮演着关键角色。然而,当数据库的用户名和密码直接硬编码在配置文件...
总结来说,Java结合RSA算法和数字证书提供了强大的文件加密解密解决方案。通过生成密钥对、创建和管理数字证书,以及使用`Cipher`进行加解密操作,可以确保数据的安全传输和存储。了解并掌握这些技术,对于开发安全...
这个凯撒密码加密解密工具拥有两个频率,可以把一段文字进行加密处理,也可以通过加密时的频率用解密器解密,可用于想向谁发送私密消息,就可以使用加密器解密,具体功能详见安装后说明