- 浏览: 396334 次
- 性别:
- 来自: 北京
文章分类
- 全部博客 (347)
- java基础 (58)
- ajax (10)
- s2sh (10)
- 版本控制 (4)
- 数据库 (34)
- 服务器 (4)
- 开发工具 (8)
- javascript (15)
- soockte (5)
- ext (2)
- 环境搭建 (7)
- struts2 (9)
- 找工作中的面试技巧 (2)
- 承接网站零活 (0)
- JNI+JONSE+OGNL (8)
- 性能优化 (4)
- Android开发 (5)
- xul (8)
- jquery (2)
- 线程 (3)
- jsp+jdbc (7)
- servlet (2)
- java对xml操作 (1)
- IO流的操作 (10)
- 项目开发前配置 (1)
- css (0)
- 上传、下载 (2)
- 知识探讨 (2)
- html (2)
- HQL (0)
- 工作技巧 (1)
- IT (1)
- Hibernate杂谈 (10)
- Spring杂谈 (35)
- DWR (5)
- JUnit测试 (3)
- EasyMock测试web (1)
- ibatis (6)
- maysql (5)
- C++ (0)
- 正则表达式(解剖) (1)
- 密码安全 (2)
- 上传 (1)
- socket (1)
- jni(java与c++结合) (1)
- jdk版本问题 (0)
- tomcat版本问题 (5)
- linux基本命令(初学) (7)
- linux项目发布 (1)
- 3年的经验总结 (1)
- 加解密 (2)
- 高级java阶段 (2)
- java内存分区 (1)
- 浏览器 (1)
- 职业规划 (1)
- 管理 (5)
- java语音 (1)
- SSH (1)
- jsp (3)
- extjs (1)
- uml (2)
- 加密 (1)
- web (2)
- Ant (1)
- 自述 (1)
- Linux (1)
- ssh源码解剖 (1)
- 代码优化 (1)
- 设计模式 (0)
- xml (2)
- JOSN (1)
- scala (0)
- hadoop (0)
- spark (0)
- hana (1)
- shior (1)
- java Word (6)
- java PDF (4)
- java Excel (0)
最新评论
-
高级java工程师:
ztao2333 写道谢谢。收藏下这个总结。呵呵
温习jdk和tomcat -
ztao2333:
大写的,不是大学的
温习jdk和tomcat -
ztao2333:
谢谢。收藏下这个总结。
温习jdk和tomcat -
the_small_base_:
你好,可以提供调用方法吗?需要的Jar,能发下源码吗?谢谢
java实现语音 -
高级java工程师:
文思涌动 写道楼主新年好。可否再传一遍给我,我没有收到, 不清 ...
s2sh整合
1.引言
在实际工作中我们常常会遇到对数据进行加密解密的工作(如对密码数据的保护或者对网络传输的数据进行保护),因为数据加密解密需要非常复杂、高效的算法,所以通常对于一般的程序员是无法完成的工作,即使对于一些公开的加密算法进行编程都是一件非常艰巨的任务(少数智商及高的程序员除外)。幸运的是现在有很多加解密算法有现成的API,我们只要了解一些加解密的工作原理,能够使用一些加解密API来完成数据保护的工作就可以了。
2.密码学简介
密码学主要包括密码编码学(加密)和密码分析学(解密)。
2.1密码学的几个主要作用:
A. Confidentiality
机密行,对数据进行保护;
B. Authentication
鉴别性,确定收到消息的接收人是数据应该正确送达的人,入侵者不能进行伪装;
C. Integrity
完整行,消息的接受者能够判断出接收的数据是否正确,是否在传输过程中遭到篡改;
D. No repudiation
抵赖性,发送数据的人不能在事后不承认自己发过的数据。
2.2数据加解密模型
加解密算法分为两种:受限制的安全算法和非受限的安全算法。受限制的安全算法出现的比较早,最初用于军方,对一些机密的数据进行加密,由于这种安全算法算法保密,所以使用率低,而且实际加密效果并不理想。非受限安全算法是一些公开的算法,使用率高,这些算法都是基于密钥的算法,现在我们主要使用的主要是这种算法。
下面就是一个数据加解密的模型。
―――加密密钥―――解密密钥――――
| |
明文->加密->密文->解密->原始明文
数据通过加密密钥进行加密,在解密的时候必须通过相应的解密密钥才能得到原始明文。
2.3数据加密的常用算法
目前常用的加密算法包括对称密钥加密算法,公开密钥加密算法等等。对称密钥加密算法包括:DES,IDEA,3DES等。公开密钥加密算法包括RSA,ECC等。
2.4 DES算法简介
DES即分组加密算法,明文密文都使用64位数据分组;采用对称算法,加密和解密算法相同,但是使用的密钥不同,密钥使用56位数;由于算法只使用了简单的数据逻辑和算术运算,所以实现起来相对简单。本文就使用DES算法来给出一个加解密工具类。
3.java 实现的对字符串加解密工具类
在实际工作中我们常常会遇到对数据进行加密解密的工作(如对密码数据的保护或者对网络传输的数据进行保护),因为数据加密解密需要非常复杂、高效的算法,所以通常对于一般的程序员是无法完成的工作,即使对于一些公开的加密算法进行编程都是一件非常艰巨的任务(少数智商及高的程序员除外)。幸运的是现在有很多加解密算法有现成的API,我们只要了解一些加解密的工作原理,能够使用一些加解密API来完成数据保护的工作就可以了。
2.密码学简介
密码学主要包括密码编码学(加密)和密码分析学(解密)。
2.1密码学的几个主要作用:
A. Confidentiality
机密行,对数据进行保护;
B. Authentication
鉴别性,确定收到消息的接收人是数据应该正确送达的人,入侵者不能进行伪装;
C. Integrity
完整行,消息的接受者能够判断出接收的数据是否正确,是否在传输过程中遭到篡改;
D. No repudiation
抵赖性,发送数据的人不能在事后不承认自己发过的数据。
2.2数据加解密模型
加解密算法分为两种:受限制的安全算法和非受限的安全算法。受限制的安全算法出现的比较早,最初用于军方,对一些机密的数据进行加密,由于这种安全算法算法保密,所以使用率低,而且实际加密效果并不理想。非受限安全算法是一些公开的算法,使用率高,这些算法都是基于密钥的算法,现在我们主要使用的主要是这种算法。
下面就是一个数据加解密的模型。
―――加密密钥―――解密密钥――――
| |
明文->加密->密文->解密->原始明文
数据通过加密密钥进行加密,在解密的时候必须通过相应的解密密钥才能得到原始明文。
2.3数据加密的常用算法
目前常用的加密算法包括对称密钥加密算法,公开密钥加密算法等等。对称密钥加密算法包括:DES,IDEA,3DES等。公开密钥加密算法包括RSA,ECC等。
2.4 DES算法简介
DES即分组加密算法,明文密文都使用64位数据分组;采用对称算法,加密和解密算法相同,但是使用的密钥不同,密钥使用56位数;由于算法只使用了简单的数据逻辑和算术运算,所以实现起来相对简单。本文就使用DES算法来给出一个加解密工具类。
3.java 实现的对字符串加解密工具类
import java.io.*; import javax.crypto.*; import javax.crypto.spec.*; import java.security.*; import java.security.spec.*; import com.sun.crypto.provider.SunJCE; import java.io.Serializable; /** * 提供加密算法,可以对输入的字符串进行加密、解密操作 */ public class EncryptData { byte[] encryptKey; DESedeKeySpec spec; SecretKeyFactory keyFactory; SecretKey theKey; Cipher cipher; IvParameterSpec IvParameters; public EncryptData() { try { // 检测是否有 TripleDES 加密的供应程序 // 如无,明确地安装SunJCE 供应程序 try{ Cipher c = Cipher.getInstance("DESede"); } catch (Exception e) { System.err.println("Installling SunJCE provider."); Provider sunjce = new com.sun.crypto.provider.SunJCE(); Security.addProvider(sunjce); } // 创建一个密钥 encryptKey = "This is a test DESede Key".getBytes(); // 为上一密钥创建一个指定的 DESSede key spec = new DESedeKeySpec(encryptKey); // 得到 DESSede keys keyFactory = SecretKeyFactory.getInstance("DESede"); // 生成一个 DESede 密钥对象 theKey = keyFactory.generateSecret(spec); // 创建一个 DESede 密码 cipher = Cipher.getInstance("DESede/CBC/PKCS5Padding"); // 为 CBC 模式创建一个用于初始化的 vector 对象 IvParameters = new IvParameterSpec(new byte[]{12,34,56,78,90,87,65,43} ); } catch (Exception exc) { // 记录加密或解密操作错误 } } /** * 加密算法 * @param password 等待加密的密码 * @return 加密以后的密码 * @throws Exception */ public byte[] encrypt(String password) { String encrypted_password = null; byte[] encrypted_pwd = null; try { // 以加密模式初始化密钥 cipher.init(Cipher.ENCRYPT_MODE,theKey,IvParameters); // 加密前的密码(旧) byte[] plainttext = password.getBytes(); // 加密密码 encrypted_pwd = cipher.doFinal(plainttext); // 转成字符串,得到加密后的密码(新) encrypted_password = new String(encrypted_pwd); } catch(Exception ex) { // 记录加密错误 } return encrypted_pwd; } /** * 解密算法 * @param password 加过密的密码 * @return 解密后的密码 */ public String decrypt(byte[] password) { String decrypted_password = null; try { // 以解密模式初始化密钥 cipher.init(Cipher.DECRYPT_MODE,theKey,IvParameters); // 构造解密前的密码 byte[] decryptedPassword = password; // 解密密码 byte[] decrypted_pwd = cipher.doFinal(decryptedPassword); // 得到结果 decrypted_password = new String(decrypted_pwd); } catch(Exception ex) { // 记录解密错误 } return decrypted_password; } }
发表评论
-
System.gc()与Runtime.getRuntime().gc()区别
2019-07-23 14:34 727首先,我们需要明确一点的是,两个gc都会强制触发垃圾收集,它们 ... -
sql大全
2013-07-12 19:02 1003经典SQL语句大全 一、基础 1、说明: ... -
ATAL ERROR in native method: JDWP No transports initialized, jvmtiError=JVMTI_ER
2013-07-04 15:38 3972windos系统bug 因为我的机器比较内存比较少512M, ... -
java读取文本文件数据
2013-01-24 23:41 1060import java.io.*; public cla ... -
java复习(set 、list、map)
2013-01-24 23:27 1102复习 public static void main( ... -
java代码实现excel输到导入oracle
2012-07-31 13:28 14381.首先需要两个jar包jxl.jar,ojdbc.jar(注 ... -
使用doc命令将java工程生成.jar文件和war文件
2011-12-30 09:56 1286假定有一个Web应用:C:\myHome myHom ... -
堆栈 新的 认识
2011-10-31 14:24 1191A a = new A(); 在堆开辟空间,并把值存在堆 ... -
java实现捕捉屏幕
2011-10-15 16:17 1628要使用的是java.util.Robot类来捕获屏幕,可以实现 ... -
抽象类、抽象方法、接口
2011-10-13 10:55 1093抽象类就是不能使用new方法进行实例化的类,即没有具体实例对象 ... -
java死锁
2011-10-10 22:05 827package cn.com.io.threadDem ... -
for和foreach使用?
2011-08-29 15:03 670在JDK5.0中加入了一个新的特性,那就是FOR-EACH循环 ... -
java开发群
2011-08-25 20:08 41欢迎java群1670293,希望有工作经验热情的加入---- ... -
JAVA中,如何判断一个字符串中包含的字符在另一个字符前面?
2011-06-30 13:34 3523[color=indigo]用它们在这个字符串中的位置来判断。 ... -
java实现判断A中是否包含B
2011-06-30 13:33 1231代码 package day6; public cla ... -
导入word到Fckeditor(java实现)
2011-06-24 13:58 1153最近项目可以说到达了一个里程碑,借这篇文章把前面的技术进行总结 ... -
使用3中不同的方式 从集合中取数据
2011-05-25 10:47 935代码 package iter; import jav ... -
Java反射
2011-05-05 08:49 815[color=blue]Java Reflection (JA ... -
Java反射机制
2011-05-05 08:48 711JAVA反射机制 JAVA ... -
get 和post
2011-05-05 08:39 806表单form的提交有两种方式,一种是get的方法,一种是pos ...
相关推荐
DES(Data Encryption Standard)是发明最早的最广泛使用的分组对称加密算法。DES算法的入口参数有三个:Key、Data、Mode。其中Key为8个字节共64位,是DES算法的工作密钥;Data也为8个字节64位,是要被加密或被解密...
java对字符串加密常用的两种方式BASE64和DES,值得一看呵呵!
java 字符串的加密 java 字符串的加密 java 字符串的加密
主要介绍了使用java自带des加密算法实现文件加密和字符串加密的示例,需要的朋友可以参考下
JAVA可逆带秘钥字符串加密算法,JAVA可逆带秘钥字符串加密算法
Java字符串加密实例:MD5,sha1,sha256等等。最常用的是对用户密码进行加密
这是一个用Java编写的简易字符串加密文件,可以对你输入的任何字符串实现加密解密功能
PB字符串加密、解密函数,非常好用。PB字符串加密、解密函数,非常好用。
分别实现了BASE64,AES,DES,MD5四种加密解密实现。包含测试代码。
字符串加密,简单算法实现字符串加密
java字符串加密 ,源代码,32位加密 java字符串加密 ,源代码,安全可靠
Java Md5字符串加密类代码分享,MD5是一个比较常见的字符串加密算法,在JAVA中应用也相当普遍,这个MD5算法类或许可以直接套用,代码中的关键部分带有注释 ,...需要使用MD5对字符串加密的,那就下载这个JAVA函数库吧。
运用DES 对不限长度的字符串加密!
主要为大家详细介绍了Java字符串加密解密,对用户输入的每个字符的值进行加密解密,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
对一个字符串进行指定算法的加密后,得到其十六进制字符串
通过随机数和按位算法对字符串的加密解密。(java版)
对JAVA字符加密后密的算法.用户服务与客户端之间的加间的加密传输.
JAVA字符流实验代码报告,JAVA Stream
JAVA字符串操作类CTool.java字符转换类,此类中收集Java编程中WEB开发常用到的一些工具。为避免生成此类的实例,构造方法被申明为private类型的。封装的功能:字符串从GBK编码转换为Unicode编码、对字符串进行md5...
Java中对字符串进行加密和解密