文档章节

Des3加密解密

好名字都被猪用了
 好名字都被猪用了
发布于 2016/04/11 14:32
字数 339
阅读 55
收藏 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
495
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
288
1
关于加密的问题,求高手解答

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

yahooooo
2013/03/26
233
5

没有更多内容

加载失败,请刷新页面

加载更多

新建作业20191011121223

2.编写一个程序,发出一声警报,然后打印下面的文本: Startled by the sudden sound,Sally shouted,"By the Great Pumpkin,what was that!" #include<stdio.h>int main(){printf("\a");......

电子197朱妍
14分钟前
1
0
家庭作业——苗钰婷

2 编写一个程序,发出一声警报,然后打印下面的文本: Startled by the sudden sound, Sally shouted, "By the Great Pumpkin, what was that! #include<stdio.h>int main(){......

OSC_Okruuv
35分钟前
5
0
经典系统设计面试题解析:如何设计TinyURL(一)

原文链接: https://www.educative.io/courses/grokking-the-system-design-interview/m2ygV4E81AR 编者注:本文以一道经典的系统设计面试题:《如何设计TinyURL》的参考答案和解析为例,帮助...

APEMESH
36分钟前
4
0
2.面向对象设计原则(7条)

开闭原则 开闭原则的含义是:当应用的需求改变时,在不修改软件实体的源代码或者二进制代码的前提下,可以扩展模块的功能,使其满足新的需求。 实现方法 可以通过“抽象约束、封装变化”来实...

Eappo_Geng
38分钟前
8
0
8086汇编基础 debug P命令 一步完成loop循环

    IDE : Masm for Windows 集成实验环境 2015     OS : Windows 10 x64 typesetting : Markdown    blog : my.oschina.net/zhichengjiu    gitee : gitee.com/zhichengjiu   ......

志成就
42分钟前
9
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部