- 浏览: 183939 次
- 性别:
- 来自: 深圳
文章分类
最新评论
-
u010244357:
你用了部分是自己的包,怎么跑呢,先生。
如何在springMVC 中对REST服务使用mockmvc 做测试 -
Abird2Simba:
你用了部分是自己的包,怎么跑呢,先生。
如何在springMVC 中对REST服务使用mockmvc 做测试 -
javer:
javer 写道代码看着有点乱啊,怎么搞的 sorry,原来是 ...
如何在springMVC 中对REST服务使用mockmvc 做测试 -
javer:
代码看着有点乱啊,怎么搞的
如何在springMVC 中对REST服务使用mockmvc 做测试 -
u011643314:
你用了部分是自己的包,怎么跑呢,先生。
如何在springMVC 中对REST服务使用mockmvc 做测试
DES加密由于在java中非常方便使用,而且性能不错,所以非常流行!!!
使用DES 首先需要密钥。。2种方法:第一自己设置
第二种:系统生成:
有了密钥之后开始对文件加密:详情见代码:【酷毙程序员,一切都在代码中】
当然也可分成小点方法:代码就好的看点
把解密分开写:
测试代码:速度相当之快,DES>>base64encode.估计也是流行原因之一
本人菜鸟。错误的地方虚心请教!!谢谢
使用DES 首先需要密钥。。2种方法:第一自己设置
//自己设置 private final static String encodeKey ="moomaia"; private Key getKey() throws Exception { // 创建一个空的8位字节数组(默认值为0) byte[] arrBTmp = encodeKey.getBytes(); System.out.println(arrBTmp.length); byte[] arrB = new byte[8]; // 将原始字节数组转换为8位 for (int i = 0; i < arrBTmp.length && i < arrB.length; i++) { arrB[i] = arrBTmp[i]; } // 生成密钥 System.out.println(arrB.length); Key key = new javax.crypto.spec.SecretKeySpec(arrB, "DES"); return key; }
第二种:系统生成:
private void createKey() { try { // 得到密钥的实例 以什么方式加密。加密的方式比较多。 KeyGenerator kg = KeyGenerator.getInstance("DES"); kg.init(56); SecretKey key = kg.generateKey(); // 将生成的密钥对象写入文件。 ObjectOutputStream objectOutputStream = new ObjectOutputStream( new FileOutputStream(new File("e:\\key.obj"))); objectOutputStream.writeObject(key); } catch (NoSuchAlgorithmException e) { e.printStackTrace(); } catch (FileNotFoundException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } } /** * @param KeyFilePath * 密钥Key对象的路径。注意使用该方法的时候,确保你已经生成了密钥。 * @return * @Description 从文件中读出Key,用于加密使用。 */ private static Key getKey(String KeyFilePath) { Key key = null; try { // 将生成的密钥对象从文件中读取出来,然后再强制转换成一个密钥对象。 ObjectInputStream objectInputStream = new ObjectInputStream( new FileInputStream(new File(KeyFilePath))); key = (Key) objectInputStream.readObject(); } catch (FileNotFoundException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } catch (ClassNotFoundException e) { e.printStackTrace(); } return key; }
有了密钥之后开始对文件加密:详情见代码:【酷毙程序员,一切都在代码中】
/** * * 字符串加密 ---byte[] * @param source * @return 放回一个byte数组,为什么不放回字符串,是因为解密的时候要传入这个byte数组才能进行解密,如果解密的时候传入的是字符串 * 那么就会出错,愿意是编码的问题。 * @throws Exception * @Description 将传入的字符串进行加密 下面写了将这种byte数组转换成字符串的方法。直接在调用就行了。 */ public String encrypt(String source) throws Exception { byte[] target =null; File srcFile = new File(source); System.out.println(srcFile.getCanonicalPath()); if(!srcFile.exists()){ System.out.println("文件不存在"); } String newName = srcFile.getAbsolutePath()+".m"; FileInputStream fis = new FileInputStream(srcFile); int fileSize = fis.available(); FileOutputStream fos = new FileOutputStream(new File(newName)); Key key = getKey(); try { Cipher cipher = Cipher.getInstance("DES"); cipher.init(Cipher.ENCRYPT_MODE, key); byte[] buf = new byte[fileSize]; System.out.println(fileSize); int c = 0; while((c=fis.read(buf))!=-1){ target = cipher.doFinal(buf); //base64encoder.encode(target,fos); fos.write(target); } } catch (NoSuchAlgorithmException e) { e.printStackTrace(); } catch (NoSuchPaddingException e) { e.printStackTrace(); } catch (UnsupportedEncodingException e) { e.printStackTrace(); } catch (InvalidKeyException e) { e.printStackTrace(); } catch (IllegalBlockSizeException e) { e.printStackTrace(); } catch (BadPaddingException e) { e.printStackTrace(); } return newName; }
当然也可分成小点方法:代码就好的看点
把解密分开写:
/** * 解密----byte[] * @param source * 加密后的byte数组。可用加密方法encrypt(“String”)生成即可 * @return 解密后的字符串。 * @throws Exception * @Description 解密算法。 */ public byte[] decrypt(byte[] source) { byte[] dissect = null; try { Key key = getKey(); Cipher cipher = Cipher.getInstance("DES"); cipher.init(Cipher.DECRYPT_MODE, key);// 使用私钥解密 dissect = cipher.doFinal(source); } catch (NoSuchAlgorithmException e) { e.printStackTrace(); } catch (NoSuchPaddingException e) { e.printStackTrace(); } catch (InvalidKeyException e) { e.printStackTrace(); } catch (IllegalBlockSizeException e) { e.printStackTrace(); } catch (BadPaddingException e) { e.printStackTrace(); } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); } return dissect; } /**从File ---->byte[] * @return * @Description 由于加密之前采用了编码的格式 所以现在采用特点的方式读出来 ,然后得到用一个byte[]用于解码。 */ public byte[] getByteFromFile(){ //BASE64Decoder base64decoder = new BASE64Decoder(); byte[] encodeByte =null; try { // encodeByte = base64decoder.decodeBuffer(new FileInputStream(new File("D:\\t.txt"))); FileInputStream fis =new FileInputStream(new File("D:\\ch03.pdf.m")); int fileSize = fis.available(); encodeByte = new byte[fileSize]; fis.read(encodeByte); } catch (FileNotFoundException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } return encodeByte; } /** * 写入文件 * @param b * @param filePath * @Description 将指定的字节写入到文件中。 */ public void writeByteToFile(byte[] b, String filePath) { File file = new File(filePath); if (!file.exists()) { try { file.createNewFile(); } catch (IOException e) { e.printStackTrace(); } } FileOutputStream fileOutputStream; try { fileOutputStream = new FileOutputStream(file); fileOutputStream.write(b); fileOutputStream.close(); } catch (IOException e) { e.printStackTrace(); } }
测试代码:速度相当之快,DES>>base64encode.估计也是流行原因之一
public static void main(String[] args) throws Exception { DESofFile desf= new DESofFile(); //desf.createKey(); Date times = new Date(); long start = times.getTime(); desf.encrypt("d:\\ch03.pdf"); desf.writeByteToFile(desf.decrypt(desf.getByteFromFile()), "d:\\ch03-9.pdf"); Date times2 = new Date(); long end =times2.getTime(); System.out.println(end - start); }
引用
本人菜鸟。错误的地方虚心请教!!谢谢
发表评论
-
使用 cxf axis1.x axis2 开发WebService
2014-02-26 14:50 1346cxf======================== ... -
基于red5 dsj 的java 处理视频流和一些疑问
2013-06-19 16:17 5651最近夭折了一个项目,由于我预研失败,同时我将被惩罚,被外派去 ... -
5分钟 熟练使用spring Aop
2013-06-09 09:56 4835声明:所有的5分钟系列博客都停留在使用的基础上,具体原理, ... -
5分钟 玩转google Gson
2013-06-05 17:18 11028google gson 是一个非常轻量的java 对象与j ... -
如何在springMVC 中对REST服务使用mockmvc 做测试
2013-06-05 09:06 46845spring 集成测试中 对mock 的集成实在是太棒了! ... -
边读边写【7】 ----java 多线程实战【Thread /Executors】
2012-04-20 17:04 1808前面2个月一直忙碌,但是还是不忘在iteye 上发发帖子,写写 ... -
struts2 上传下载模板
2012-04-20 09:38 2791第一 struts2 更新比较慢。核心的xwork 基本不变。 ... -
struts2 上传下载模板
2012-04-18 22:21 0struts2下载文件时出错提示:java.lang.Clas ... -
java乱码补充 : 移植乱码 问题
2012-04-18 12:00 1632上一篇: jquery ajax struts2 数据库等中 ... -
jquery ajax struts2 数据库等中文乱码问题解决大全
2012-04-18 09:31 4858ok 乱码了。 乱码第一件事,静下心来,思考一下这乱码出处的 ... -
java 内存的管理 转载▼
2012-04-17 16:39 1512java 内存的管理 转载▼ 内存的管理(1) 使用Ja ... -
边读边写【6】 ----序列化和反序列化
2012-04-16 15:26 0边读边写【6】 ----序列化和反序列化 -
边读边写【5】 ----java 并发包
2012-04-09 15:09 0java 并发包里面的几个常用的东西 ConCurrentH ... -
边读边写【2】 ----java 集合包之深入Map
2012-04-09 11:49 0Collection 中还有一个Set 但是常用的Set 都是 ... -
边读边写【3】 ----java 集合包之各个集合性能分析
2012-04-10 09:38 1917上次主要看了Map接口,以及Map的选择地址: 。http:/ ... -
边读边写【1】 ----java 集合包之深入List
2012-04-09 11:14 2592一、java 集合包最常用 ... -
hadoop的1TB排序
2012-04-09 09:22 1449hadoop的1TB排序 作者:nos ... -
java 调用lame.exe 将 wav 进行MP3压缩的一些问题
2012-03-05 10:24 5755首先下载附件 lame.exe copy到d 盘,因为代码默认 ... -
java 大小端存储模式 转化
2012-01-14 16:52 14556所谓的大端模式:是指数据的高位,保存在内存的低地址中,而数据 ... -
myeclipse import sun.misc.BASE64Encoder与sun.misc.BASE64Decoder导入错误
2012-01-09 19:05 2228原因你的jre是myeclipse自带的,不是你安装jdk时候 ...
相关推荐
主要介绍了使用java自带des加密算法实现文件加密和字符串加密的示例,需要的朋友可以参考下
DES使用64位的密钥,对数据进行64次迭代操作,每轮迭代包括置换、异或等步骤,使得加密过程复杂且难以破解。加密后的DES信息是一个密文,对于外人来说几乎是不可读的,从而提高了数据的保密性。 在文件传输过程中,...
通过使用des算法对普通文件加密加密的实现
在实际应用中,为了保护文件的安全,可以先用非对称加密如RSA对文件的密钥进行加密,然后使用对称加密如DES对文件内容进行加密。这样,只有知道私钥的人才能解密文件。C_DesEncryptFile.cpp和C_DesEncryptFile.h文件...
文件加密可以通过使用 Cipher 对象来实现,首先需要获取 DES 加密的密钥,然后使用 Cipher 对象来加密文件。 同样,在 Java 中,实现 RSA 加密算法也可以通过生成一对密钥,然后保存到 xml 文件中,以便以后获取私...
本篇文章将深入探讨如何使用C#语言实现DES对文件的加密和解密操作。 首先,了解DES算法的基础知识。DES是一种块加密算法,每个数据块大小为64位,实际用于加密的有效数据为56位,因为8位用于奇偶校验。它采用了一种...
一个使用Des算法对文件进行加密的工具,支持大文件
3. **加密操作**:调用`Cipher`对象的`init(Cipher.ENCRYPT_MODE, key)`方法初始化加密过程,然后使用`doFinal()`方法对文件数据进行加密,得到加密后的字节数组。 4. **解密操作**:与加密类似,先初始化`Cipher`...
6. **解密过程**:使用相同的密钥和模式,对加密文件进行解密,恢复原始内容。 7. **安全存储密钥**:密钥的安全存储至关重要,因为一旦丢失或遗忘,加密的数据将无法恢复。 在实际应用中,由于DES的安全性限制,...
在给定的“des加密例程”中,可能包含了一个调用动态链接库(DLL)实现DES加密解密的示例代码。DLL是Windows操作系统中的一种共享库,可以被多个程序同时调用,节省内存资源并便于代码复用。这个示例可能涉及以下...
这通常涉及读取文件内容,按块进行DES加密,然后将加密后的数据写回文件。 7. **解密过程**:与加密相反,解密是通过应用逆操作来恢复原始数据。源代码中应该包含对应的解密函数,使用相同的密钥和逆向操作还原数据...
des加密解密 对文件进行加密解密 des加密解密 对文件进行加密解密
3DES的工作原理可以简单概括为:首先,对明文使用一个密钥进行DES加密;接着,再用另一个密钥对上一步得到的密文进行DES解密;最后,再次用第三个密钥对解密后的密文进行DES加密。这样,即使攻击者获得了部分加密...
在SQL Server中进行DES加密是保护敏感数据的一种常见方法,特别是在C#应用程序中与数据库交互时。DES(Data Encryption Standard)是一种对称加密算法,它使用相同的密钥进行加密和解密,提供了一种相对快速的数据...
在这个“Qt写的DES加密算法展示程序”中,我们将深入探讨DES(Data Encryption Standard)加密算法以及如何使用Qt来实现这一经典密码学技术。 **DES加密算法** DES是一种块加密算法,由IBM在1970年代初期开发,并...
每个数据块使用DES加密函数(如`CryptEncrypt`)进行加密。 4. **处理边界情况**:最后一个数据块可能不满64位,此时需要填充到64位,并进行加密。填充方法通常遵循PKCS#7标准。 5. **写入密文**:将所有加密后的...
- 第一轮加密:使用子密钥K1对明文数据块进行DES加密。 - 第二轮解密:使用子密钥K2对上一步得到的密文进行DES解密。 - 第三轮加密:再使用子密钥K3对第二步得到的密文进行DES加密。最终得到的密文就是3DES加密的...
标题中的“3DES加密”指的是Triple DES(三重数据加密标准),它是一种广泛使用的对称加密算法,基于DES(Data Encryption Standard)并将其安全性增强了三倍。DES原本使用56位密钥,3DES通过三次独立的DES加密过程...
压缩包内的“3des.exe”文件很可能是该3DES加密解密工具的可执行程序,用户可以通过运行这个程序来实现对数据的加密和解密。使用此类工具时,用户需要输入适当的密钥,并选择加密或解密模式。对于3DES,为了保证安全...
在这个文件加密系统中,用户可以将需要保护的文件输入到程序中,程序会使用DES算法生成一个密钥,然后用这个密钥对文件内容进行加密。加密过程通常是将文件读取成二进制数据,然后应用DES算法进行位操作,最后生成...