- 浏览: 69167 次
- 性别:
- 来自: 北京
最近访客 更多访客>>
最新评论
-
royboy:
徐风子 写道原来写这么绕就是为了实现一个单体模式呀。 唉,维护 ...
个人较为喜欢单例实现方式 -
徐风子:
原来写这么绕就是为了实现一个单体模式呀。 唉,维护起来真头疼。 ...
个人较为喜欢单例实现方式
最近在学习加密解密的相关知识,为了加强记忆,参照一些资料写了些简单的加解密实现。写不好,欢迎大家拍砖和指教。
DES加密实例
package com.royboy.encrypt; import java.io.BufferedInputStream; import java.io.ByteArrayOutputStream; import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.FileWriter; import java.io.IOException; import java.security.NoSuchAlgorithmException; import javax.crypto.Cipher; import javax.crypto.KeyGenerator; import javax.crypto.SecretKey; import javax.crypto.SecretKeyFactory; import javax.crypto.spec.DESKeySpec; import com.sun.org.apache.xml.internal.security.utils.Base64; public class DesTester { public final static String FILEPATH = "C:\\BitIO.txt"; public static byte[] data ; /** * 生成密钥 * @return 密钥内容 * @throws NoSuchAlgorithmException */ public void generateKey() throws NoSuchAlgorithmException { //实例化密钥生成器 KeyGenerator kg = KeyGenerator.getInstance("DES"); //初始化 kg.init(56); //生成密钥 SecretKey secretKey = kg.generateKey(); //获得二进制编码的密钥 byte[] b = secretKey.getEncoded(); /* * 将密钥写入到文件中 * */ File fileInst = new File(FILEPATH); try { if (!fileInst.exists()) fileInst.createNewFile(); FileWriter fw = new FileWriter(fileInst); //对生成的密钥进行了BASE64加密 String keyEncode = Base64.encode(b); System.out.println("生成的密钥:"+keyEncode); fw.write(keyEncode); fw.flush(); } catch (FileNotFoundException e) { e.printStackTrace(); } catch (IOException ioe) { ioe.printStackTrace(); } } private byte[] getKey() { byte[] content = null; try { File fileInst = new File(FILEPATH); BufferedInputStream in = new BufferedInputStream( new FileInputStream(fileInst)); ByteArrayOutputStream out = new ByteArrayOutputStream(1024); byte[] temp = new byte[1024]; int size = 0; while ((size = in.read(temp)) != -1) { out.write(temp, 0, size); } in.close(); content = out.toByteArray(); content = Base64.decode(content); } catch(IOException ioe){ ioe.printStackTrace(); }catch (Exception e) { e.printStackTrace(); } return content; } /** * DES数据加密 * @return 加密后的数据(用户base64进行了编码) */ private String encryptData(){ byte[] encrypt =null; byte[] sk = getKey(); try { //实例化密钥材料 DESKeySpec dks = new DESKeySpec(sk); //实例化秘密密钥工厂 SecretKeyFactory keyFactory = SecretKeyFactory.getInstance("DES"); //生成秘密密钥 SecretKey secretKey = keyFactory.generateSecret(dks); //实例化 Cipher cipher = Cipher.getInstance("DES"); //实始化,设置为加密模式 cipher.init(Cipher.ENCRYPT_MODE, secretKey); //执行加密操作 encrypt = cipher.doFinal(data); } catch (Exception e) { } //对加密后的内容进行了BASE64编码。非必须,对于网络传送数据来说,二进制更为理想 String encryptStr = Base64.encode(encrypt); System.out.println("加密后的数据(base64):"+encryptStr); return encryptStr; } /** * DES数据解密 * @param d 需要解密的数据 * @return 解密后的数据 */ private byte[] decryptData(String encryptStr){ byte[] decrypt =null; /* * 得到密钥材料 * */ byte[] sk = getKey(); try { //实例化密钥材料 DESKeySpec dks = new DESKeySpec(sk); //实例化秘密密钥工厂 SecretKeyFactory keyFactory = SecretKeyFactory.getInstance("DES"); //生成秘密密钥 SecretKey secretKey = keyFactory.generateSecret(dks); //实例化 Cipher cipher = Cipher.getInstance("DES"); //实始化,设置为解密模式 cipher.init(Cipher.DECRYPT_MODE, secretKey); //执行解密操作 decrypt = cipher.doFinal(Base64.decode(encryptStr)); } catch (Exception e) { } return decrypt; } /** * DES加密测试方法 * @param dataStr 要加密的原始内容 * @throws Exception */ public void desTest(String dataStr) throws Exception{ System.out.println("=====DES====="); System.out.println("原始数据:"+dataStr); data = dataStr.getBytes(); generateKey(); System.out.println("解密后的数据(string):"+new String(decryptData(encryptData()))); System.out.println("=====DES====="); } public static void main(String[] args) throws Exception{ DesTester dt = new DesTester(); dt.desTest("中华人民共和国"); } }
发表评论
-
HashMap 你了解多少
2014-03-10 21:47 914HashMap是如何存放对象 ... -
关于LIST的使用
2012-08-04 23:19 175LIST的接口是使用 ... -
关于枚举的使用
2012-04-16 13:32 0关于枚举的个人看法 -
SQL 变量赋值问题
2011-06-14 16:29 326在SQL中,关于变量赋值有要注意的地方 示例1 DE ... -
AES加密实例
2011-05-05 15:32 2311接上篇,这次写个AES加密的实例,作为DES加密的替代者,它更 ... -
加快Gmail对POP3邮件的访问频繁
2010-12-22 13:54 709Gmail,发现了它很多不错的地方,现在也将其他邮 ... -
反射代理下取用户真实IP
2010-12-16 09:18 317通常通过request.getRemoteAddr() 取得客 ... -
Berkeley DB Java Edition
2010-07-23 15:39 702一、 简介 Ber ... -
Berkeley DB Java Edition 基本示例
2010-07-23 15:38 610package test;import com.sleepyc ... -
个人较为喜欢单例实现方式
2010-04-14 18:00 1039有很多单例模式的实现例子,它的实现方式也是多种,什么“饿汉” ... -
再议JAVA路径问题
2009-09-09 10:47 313最近研究了JAVA路径相关的文章,可还是没解决我所遇到的问题的 ... -
CSS控制文本长度
2009-07-22 17:03 632<div style="width:200;t ... -
产生随机数的工具类
2009-07-15 13:38 285import java.util.Random; pub ... -
javascript与剪贴板交互
2009-06-11 16:55 10691.怎样操作剪贴板,从而实现复制、剪切与粘贴?同时判断剪贴板里 ... -
Applet通过数字签名授予访问本地资源
2009-06-01 16:48 712最近之好公司项目正好遇到需要用Applet做一个网页的Ftp上 ... -
Jquery对表单的一些操作
2009-05-26 09:13 3401.取下拉菜单选中项的文本 $("#select o ... -
请教:CMS开发的相关问题
2009-03-04 15:36 354公司是做视音视点播直播系统的,原来有一个相应的资源 ... -
dom4j 输出UTF-8 XML时中文乱码
2009-02-24 14:29 3081使用DOM4J的XMLWriter输出UTF-8编码的 ... -
较为常用的正则表达式
2009-02-05 09:08 213正则表达式用于字符串处理,表单验证等场合,实用高效,但用到时总 ... -
数据库操作类
2007-11-07 23:28 1937java 代码 package ...
相关推荐
在给定的"des加密实例"中,我们看到这个项目是使用VC6.0编写的。VC6.0是Microsoft Visual C++ 6.0的简称,是一款广泛使用的C++集成开发环境,尤其适用于Windows平台上的应用程序开发。在这个实例中,开发者已经创建...
简单的DES加密解密实例,平台为VS2010,C#Winform应用程序。
Delphi DES加密实例是关于使用Delphi编程语言实现数据加密标准(DES)的一个具体应用案例。DES是一种广泛使用的对称加密算法,它基于一个64位的密钥对数据进行64位块的加密和解密。在Delphi中,可以使用 Indy 或者 ...
接下来,我们谈谈3DES(Triple Data Encryption Standard),它是基于DES加密算法的一种加强版。3DES通过三次应用DES算法来提高安全性。尽管3DES比AES慢,但在某些情况下,如兼容旧系统时,可能仍会用到3DES。在...
这个类提供了一系列的方法,如`Create()`用于创建一个DES加密实例,`Encrypt()`和`Decrypt()`用于加密和解密数据。 3. **创建DES加密器** 使用`DES.Create()`方法创建一个DES加密器对象。由于默认的DES实现不支持...
1. **创建DES实例**:首先,通过DESCryptoServiceProvider类创建一个DES加密实例,并设置密钥和初始化向量(IV)。注意,密钥必须是8字节,IV也应为8字节。通常,我们使用随机生成器(RNGCryptoServiceProvider)来...
1. **创建DES对象**:通过` DESCryptoServiceProvider.Create()`方法创建一个DES加密实例,并设置密钥和初始化向量(IV)。注意,密钥和IV应保持一致,否则解密时会出现错误。 2. **设置模式和填充方式**:可以设置...
在这个“VC++ DES双层加密实例”中,我们将探讨如何使用C++编程语言,特别是在Visual C++ 6.0环境下,实现基于DES(Data Encryption Standard)算法的双层加密。DES是一种经典的对称加密算法,它在1970年代被广泛...
通过这个类,你可以创建一个DES加密实例,设置密钥和IV,然后对字符串进行加密和解密操作。 C++动态链接库(DLL)的使用可能是为了利用C++的性能优势或特定的库功能。在C#中调用C++ DLL,需要使用P/Invoke...
在SQL Server中进行DES加密是保护敏感数据的一种常见方法,特别是在C#应用程序中与数据库交互时。DES(Data Encryption Standard)是一种对称加密算法,它使用相同的密钥进行加密和解密,提供了一种相对快速的数据...
以下将详细介绍如何在Java中实现DES加密,并提供一个实例。 首先,理解DES算法的基本原理: DES是一种块密码,它将明文分为64位的数据块进行加密,其中第8位用于奇偶校验,实际工作在56位上。它使用了Feistel结构,...
C实现DES加密用,C语言实现DES加密(含实例),是学习加密算法的好东西
在"DES加密解密实例网络安全传输系统"中,DES算法用于确保在网络上传输的数据不被未授权的第三方获取或篡改。数据在发送端使用DES加密,变为密文,然后通过网络发送到接收端。接收端接收到密文后,使用同样的DES密钥...
在JS版的DES加密解密中,我们可以看到JavaScript语言被用来实现这一功能,这对于Web应用中的安全通信非常有用。 DES加密过程分为以下几个步骤: 1. **初始置换**:原始的64位明文数据经过一个固定的置换表进行变换...
本DEMO提供了C#和JAVA两种编程语言下的DES加密和解密实现,这对于理解DES算法及其在实际开发中的应用非常有帮助。 1. **DES算法原理** - **结构**:DES算法基于Feistel网络,它将明文分为左右两半,通过一系列的...
DES加密 解密 方法: DESr DESw 支持3DES加密 解密 类中利用函数重载的方式 实现两种加密方式 加密后为16进制字符串 使用方法: 实例化一个对象 然后就可以随便用了。 如 DES加密 解密 CString sd,sd2; yxyDES2 ...
1. 创建DES实例:使用DESCryptoServiceProvider类创建一个DES加密对象。 2. 设置密钥和初始化向量:这两个参数必须与前端加密时保持一致,否则无法正确解密。 3. 解密数据:使用CreateDecryptor方法获取解密器,然后...
安装完成后,我们可以通过导入Chilkat模块并实例化3DES对象来开始使用3DES加密功能。例如: ```python from Chilkat import Ck3Des # 实例化3DES对象 des = Ck3Des() # 设置密钥 key = "我的3DES密钥".encode('...
本篇文章将详细探讨Java环境下如何实现3DES加密算法,并介绍相关知识点。 首先,让我们了解3DES的工作原理。3DES是对原始DES算法的扩展,它通过执行三次加密过程来提高安全性。简而言之,3DES分为两种模式:EDE...