Java简单加解密
2013-10-28 14:16
211 查看
无密钥
package cn.com.babe;
import java.io.IOException;
public final class StringUtil
{
/**
* Encode a string using Base64 encoding. Used when storing passwords as
* cookies.
*
* This is weak encoding in that anyone can use the decodeString routine to
* reverse the encoding.
*
* @param str
* @return String
* @throws IOException
*/
public static String encodeString(String str) throws IOException
{
sun.misc.BASE64Encoder encoder = new sun.misc.BASE64Encoder();
String encodedStr = new String(encoder.encodeBuffer(str.getBytes()));
return encodedStr.trim();
}
/**
* Decode a string using Base64 encoding.
*
* @param str
* @return String
* @throws IOException
*/
public static String decodeString(String str) throws IOException
{
sun.misc.BASE64Decoder dec = new sun.misc.BASE64Decoder();
String value = new String(dec.decodeBuffer(str));
return value;
}
public static void main(String[] args){
String str="123456789";
try {
System.out.println(StringUtil.encodeString(str));
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
/*
* 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 实现的对字符串加解密工具类
*
* */
package cn.com.babe;
import java.security.Provider;
import java.security.Security;
import javax.crypto.Cipher;
import javax.crypto.SecretKey;
import javax.crypto.SecretKeyFactory;
import javax.crypto.spec.DESedeKeySpec;
import javax.crypto.spec.IvParameterSpec;
/**
* 提供加密算法,可以对输入的字符串进行加密、解密操作
*/
public class EncryptData {
private static byte[] encryptKey;
private static DESedeKeySpec spec;
package cn.com.babe;
import java.io.IOException;
public final class StringUtil
{
/**
* Encode a string using Base64 encoding. Used when storing passwords as
* cookies.
*
* This is weak encoding in that anyone can use the decodeString routine to
* reverse the encoding.
*
* @param str
* @return String
* @throws IOException
*/
public static String encodeString(String str) throws IOException
{
sun.misc.BASE64Encoder encoder = new sun.misc.BASE64Encoder();
String encodedStr = new String(encoder.encodeBuffer(str.getBytes()));
return encodedStr.trim();
}
/**
* Decode a string using Base64 encoding.
*
* @param str
* @return String
* @throws IOException
*/
public static String decodeString(String str) throws IOException
{
sun.misc.BASE64Decoder dec = new sun.misc.BASE64Decoder();
String value = new String(dec.decodeBuffer(str));
return value;
}
public static void main(String[] args){
String str="123456789";
try {
System.out.println(StringUtil.encodeString(str));
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
/*
* 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 实现的对字符串加解密工具类
*
* */
package cn.com.babe;
import java.security.Provider;
import java.security.Security;
import javax.crypto.Cipher;
import javax.crypto.SecretKey;
import javax.crypto.SecretKeyFactory;
import javax.crypto.spec.DESedeKeySpec;
import javax.crypto.spec.IvParameterSpec;
/**
* 提供加密算法,可以对输入的字符串进行加密、解密操作
*/
public class EncryptData {
private static byte[] encryptKey;
private static DESedeKeySpec spec;
相关文章推荐
- Java加密解密___base64简单实用
- java加密解密简单列子
- java(md5) 加密解密简单实现
- Java加密解密简单实现
- JAVA加密C++解密简单方法
- java实现AES的简单加密解密
- RSA算法简单实现加密、解密、签名、验证(原创Java程序)
- java对文件简单的加密解密(异或运算)
- java加密解密___des的简单实现
- 项目实战:JNI-Java与C的交互(简单加密解密)
- java的简单加密/解密方法
- java实现字符的简单加密和解密
- Java - 简单加密-解密方法包装, 含encode(),decode(),md5()
- JAVA思考题,简单的数据加密和解密
- java jvm中添加Provider 进行简单的加解密(转)
- Java实现一个简单的加密解密方法
- java实现RSA+AES的简单加密解密
- 一个简单的加密解密方法(java、shell脚本)
- java 加密解密简单实现
- java 简单的字节流与字符串的转换换 及加密与解密(对称)