您的位置:首页 > 编程语言 > Java开发

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;

   
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: