文档章节

Des3加密解密

好名字都被猪用了
 好名字都被猪用了
发布于 2016/04/11 14:32
字数 339
阅读 38
收藏 4

实测  没问题

package cn.com.test;


import javax.crypto.Cipher;
import javax.crypto.KeyGenerator;
import javax.crypto.SecretKey;
import javax.crypto.spec.SecretKeySpec;




public class Des3 {
    private static final String Algorithm = new String("DESede"); //算法标识
    private SecretKey deskey; //密钥


    public Des3() throws Exception {
        KeyGenerator keygen = KeyGenerator.getInstance(Algorithm);
        deskey = keygen.generateKey();
    }


    public Des3(byte[] key) throws Exception {
        if (key == null) {
            throw new Exception("input key can not null");
        }
        if (key.length != 24) {
            throw new Exception("key length is error, key length must 24 bytes");
        }


        SecretKeySpec destmp = new SecretKeySpec(key, Algorithm);
        deskey = destmp;
    }


    public byte[] getKey() {
        return deskey.getEncoded();
    }


    /**
     * 加密数据
     * @param data byte[]
     * @return byte[]
     */
    public byte[] encrypt(byte[] data) throws Exception {
        Cipher c1 = Cipher.getInstance(Algorithm);
        c1.init(Cipher.ENCRYPT_MODE, deskey);
        return c1.doFinal(data);


    }


    /**
     * 解密数据
     * @param data byte[]
     * @return byte[]
     */
    public byte[] decrypt(byte[] data) throws Exception {
        Cipher c1 = Cipher.getInstance(Algorithm);
        c1.init(Cipher.DECRYPT_MODE, deskey);
        return c1.doFinal(data);
    }
}


package cn.com.test;




import com.ibm.misc.BASE64Decoder;
import com.ibm.misc.BASE64Encoder;


public class Des3Util {
public static String decryptBy3Des(String encryptStr, String key) throws Exception {


Des3 des = new Des3(key.getBytes());
BASE64Decoder base64decoder = new BASE64Decoder();
byte[] encryptBytes = base64decoder.decodeBuffer(encryptStr);
byte[] decryptBytes = des.decrypt(encryptBytes);
return new String(decryptBytes,"UTF-8");
}
public static String encryptBy3Des(String str, String key) throws Exception {
Des3 des = new Des3(key.getBytes());
byte[] encryptBytes=des.encrypt(str.getBytes("UTF-8"));
BASE64Encoder  base64encoder=new BASE64Encoder();
String dd=    base64encoder.encode(encryptBytes);;
return dd;
}


}


测试类

package cn.com.test;


import java.util.HashMap;
import java.util.Map;


import com.alibaba.fastjson.JSON;


public class JiamiTest {
public static void main(String[] args) throws Exception {

Map<String,String> jiamimap=new HashMap<String, String>();
jiamimap.put("birthday","2016-01-08");
jiamimap.put("card","12345689522");
jiamimap.put("cardType","4");
jiamimap.put("community_id","1");
jiamimap.put("community_name","一般社康");
jiamimap.put("dept_id","223");
jiamimap.put("dept_name","骨科");
jiamimap.put("doctor_name","张三");
jiamimap.put("phone","12345678944");
jiamimap.put("querytime","xxxxxx");
jiamimap.put("return_url","xxxx");
jiamimap.put("sex","女");
jiamimap.put("token","4028800b51e760b40151e781bb44004b");
jiamimap.put("truename","张四");
jiamimap.put("user","shekang");
String json =JSON.toJSONString(jiamimap);
    String a=Des3Util.encryptBy3Des(json, "abcabcabcabcabcabcabcabc");
    System.out.println("加密后的字符串++++++++++"+a);
    String b=Des3Util.decryptBy3Des(a, "abcabcabcabcabcabcabcabc");
    System.out.println("解密后的字符串——————————"+b);

   }


}



© 著作权归作者所有

共有 人打赏支持
好名字都被猪用了
粉丝 0
博文 15
码字总数 5666
作品 0
程序员
用openssl对文件加密及解密

Openssl是一个开源的用以实现SSL协议的产品,它主要包括了三个部分:密码算法库、应用程序、SSL协议库。Openssl实现了SSL协议所需要的大多数算法。 下面我将单介绍使用Openssl进行文件的对称...

独钓渔
2014/07/24
0
0
初接触Linux,加密、解密、OpenSSLl的基本应用及CA的实现过程

当前这个社会信息是相当强大的武器,保护武器显得尤为重要,今天给大家介绍加密解密相关的内容。 一、加密解密的分类 ㈠、对称加密 加密方、解密方都是用同一个口令,加密算法对固定大小的块...

王丶Blue
2014/03/14
0
0
加密、解密、openssl的基本应用及CA的实现过程

为确保信息和资源的安全,密码的重要性不言而喻;网络时代,数据的安全尤为重要。 《一》加密解密 数据加密的方式有三种:对称加密,非对称加密,单向加密 (1)对称加密 是用算法加口令的一...

baglinux
2014/03/09
0
0
Android与Server端的传输加密

1、必须找一个在Android和JDK上通用的加密算法,后面发现了http://www.cnblogs.com/hjtdlx/p/3926141.html这篇文章,试了一下,是可以用的。 2、Android和Server端的传输采用JSON格式,除了加...

echola
2015/09/07
223
1
关于加密的问题,求高手解答

请问给位大大,现在我想做一个android和java的系统。在两端之间相互进行数据传输,要求在过程中现将数据加密,然后传输,在另一端接收后解密。暂时支持des,des3,aes三种方式,而且加密方式要...

yahooooo
2013/03/26
196
5

没有更多内容

加载失败,请刷新页面

加载更多

javascript source map 的使用

之前发现VS.NET会为压缩的js文添加一个与文件名同名的.map文件,一直没有搞懂他是用来做什么的,直接删除掉运行时浏览器又会报错,后来google了一直才真正搞懂了这个小小的map文件背后的巨大...

粒子数反转
昨天
0
0
谈谈如何学Linux和它在如今社会的影响

昨天,还在农耕脑力社会,今天已经人工智能技术、大数据、信息技术的科技社会了,高速开展并迅速浸透到当今科技社会的各个方面,Linux日益成为人们信息时代的到来,更加考验我们对信息的处理程...

linux-tao
昨天
0
0
学习设计模式——中介者模式

1. 认识中介者模式 1. 定义:用一个中介对象来封装一系列的对象交互行为,中介者使得各对象不需要显式的互相引用,从而使其松散耦合,独立的改变他们之间的交互。 2. 结构: Mediator:中介者...

江左煤郎
昨天
0
0
深入理解Plasma(1):Plasma 框架

这一系列文章将围绕以太坊的二层扩容框架,介绍其基本运行原理,具体操作细节,安全性讨论以及未来研究方向等。本篇文章作为开篇,主要目的是理解 Plasma 框架。 Plasma 作为以太坊的二层扩容...

HiBlock
昨天
0
0
Java 8 日期 示例

Java 8 推出了全新的日期时间API。Java处理日期、日历和时间的方式一直为社区所诟病,将 java.util.Date设定为可变类型,以及SimpleDateFormat的非线程安全使其应用非常受限。Java也意识到需...

阿刚ABC
昨天
1
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部