package test;

import java.security.InvalidKeyException;
import java.security.Key;
import java.security.NoSuchAlgorithmException;

import javax.crypto.Cipher;
import javax.crypto.KeyGenerator;
import javax.crypto.SecretKey;
import javax.crypto.SecretKeyFactory;
//import javax.crypto.SecretKeyFactory;
import javax.crypto.spec.DESKeySpec;

public class DESCoder
{

        //加密算法
        public static final String KEY_ALGORITHM= "DES";
       
        //加密/解密算法 /工作模式/填充模式
        public static final String CIPHER_ALGORITHM= "DES/ECB/PKCS5Padding";
       
        //还原密钥
        private static Key
toKey(byte[] key) throws InvalidKeyException,
NoSuchAlgorithmException, Exception{
               //实例化DES密钥材料
              DESKeySpec dks= new DESKeySpec(key);
               //实例化密钥工厂
              SecretKeyFactory keyFactory=SecretKeyFactory.getInstanceKEY_ALGORITHM);
               //生成密钥
              SecretKey secretKey= keyFactory.generateSecret(dks);
               return 
secretKey;
       }
       
        //解密
        public static byte[]
decrpt(byte[] data, byte[]
key) throws InvalidKeyException, NoSuchAlgorithmException,
Exception{
               //还原密钥
              Key k= toKey(key);
               //实例化
              Cipher cipher=Cipher. getInstance(CIPHER_ALGORITHM);
               //初始化
              cipher.init(Cipher. DECRYPT_MODE,k);
               return cipher.doFinal(data);
       }
       
        //加密
        public static byte[]
encrypt(byte[] data, byte[]
key) throws Exception{
               //还原密钥
              Key k= toKey(key);
              Cipher cipher=Cipher. getInstance(CIPHER_ALGORITHM);
              cipher.init(Cipher. ENCRYPT_MODE,
k);
               return cipher.doFinal(data);
       }
       
        //获取密钥,二进制形式
        public static byte[]
initKey() throws Exception{
              KeyGenerator kg=KeyGenerator. getInstance(KEY_ALGORITHM);
               //初始化密钥生成器
              kg.init(56); //kg.init(64),kg.init(new
SecureRandom());
               //生成密钥
              SecretKey secretKey=kg.generateKey();
               //获取密钥的二进制形式
               return secretKey.getEncoded();
       }
}

多重DES

加密算法 KEY_ALGORITHM ="DESede"

CIPHER_ALGORITHM ="DESede/ECB/PKCS5Padding

密钥规范 DEedeSKeySpec
dks=new DESedeKeySpec(key)

密钥长度也要修改 kg.init(168);

DES加密--不安全加密的更多相关文章

  1. 备忘DES带向量的加密和解密与DES简单加密与解密

    package com.ego.util; import java.security.Key; import java.security.SecureRandom; import java.secur ...

  2. 【Android工具】DES终结者加密时报——AES加密演算法

    转载请注明出处:http://blog.csdn.net/zhaokaiqiang1992 在前面的两篇文章中.我们介绍了DES算法,3DES算法以及他们的Android程序实现,并研究了怎样才干实现 ...

  3. php中des加密解密 匹配C#des加密解密 对称加密

    原文:php中des加密解密 匹配C#des加密解密 对称加密 网上找来的 php des加密解密 完全匹配上一篇C# 字符串加密解密函数  可以用于C#和php通信 对数据进行加密,其中$key 是 ...

  4. python中常用的base64 md5 aes des crc32等的加密解密

    1.base64 Python内置的base64模块可以实现base64.base32.base16.base85.urlsafe_base64的编码解码,python 3.x通常输入输出都是二进制形 ...

  5. md5加密、Des加密对称可逆加密、RSA非对称可逆加密、https单边验证、银行U盾双边认证

    1.md5不可逆的加密方式,加密成一个32位的字符串.算法是公开的,任何语言的加密结果都是一样的.总有可能是重复的.     用途:             (1)防止明文存储:可以用作密码加密    ...

  6. DES加密解密 MD5加密解密

    #region MD5 加密 /// <summary> /// MD5加密静态方法 /// </summary> /// <param name="Encry ...

  7. [DEncrypt] MySecurity--安全加密/Base64/文件加密 (转载)

    点击下载 MySecurity.zip 这个类是关于加密,解密的操作,文件的一些高级操作1.MySecurity  加密字符串2.MySecurity  加密字符串 密钥为系统默认 012345678 ...

  8. 安全HTTPS-全面详解对称加密,非对称加密,数字签名,数字证书和HTTPS【下】

    1.  HTTPS 1.1. 什么是HTTPS HTTPS(HypertextTransfer Protocol Secure)即安全的HTTP.HTTPS的安全基础是安全套接层(Secure Soc ...

  9. java-信息安全(七)-基于非对称加密,对称加密等理解HTTPS

    概述 java-信息安全(一)-BASE64,MD5,SHA,HMAC java-信息安全(二)-对称加密算法DES,3DES,AES,Blowfish,RC2,RC4 java-信息安全(四)-数据 ...

  10. Python的RSA加密和PBE加密

    最近在写接口的时候,遇到了需要使用RSA加密和PBE加密的情况,对方公司提供的DEMO都是JAVA的,我需要用python来实现. 在网上搜了一下,python的RSA加密这块写的还是比较多的,但是P ...

随机推荐

  1. 蓝桥杯-摔手机问题【dp】

    非常详细的题解:戳这里 例题:poj-3783 Balls Balls Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 115 ...

  2. Spring-cloud-netflix-hystrix

    服务注册中心eureka-server已经搭好,并且SPRING-CLOUD-NETFLIX-EUREKA-CLIENT-APPLICATION提供一个hello服务 畏怯还编写一个eureka-cl ...

  3. CDD All In One

    CDD All In One 组件驱动开发 (CDD) refs https://www.componentdriven.org/ https://www.learnstorybook.com/int ...

  4. JavaScript Learning Paths(ES5/ES6/ES-Next)

    JavaScript Learning Paths(ES5/ES6/ES-Next) JavaScript Expert refs https://developer.mozilla.org/en-U ...

  5. 微信公众号 bug

    微信公众号 bug web bug refs xgqfrms 2012-2020 www.cnblogs.com 发布文章使用:只允许注册用户才可以访问!

  6. document.getElementById & document.querySelector

    document.getElementById & document.querySelector https://developer.mozilla.org/en-US/docs/Web/AP ...

  7. MacBook Pro 关闭触控板

    MacBook Pro 关闭触控板 https://support.apple.com/zh-cn/HT204895 https://support.apple.com/zh-cn/HT203171 ...

  8. [转]Ubuntu16.04安装搜狗输入法

    原文地址:https://blog.csdn.net/u013894834/article/details/60357071,转载主要方便随时查阅,如有版权要求,请及时联系. 1.首先我们先去搜狗输入 ...

  9. web项目中各工具的作用

    一.HTML:用于搭建基础网页,展示网页的内容 Hyper Text Markup Language 超文本标记语言 ,是最基础的网页开发语言. * 超文本: * 超文本是用超链接的方法,将各种不同空 ...

  10. Yarn框架的一般过程

    基本过程图: Clinet向ResouceManager发送Job请求 ResouceManager接受到请求后在自身开启一个Container 来运行的ApplicationManager组件,Ap ...