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. 二进制安装kubernetes(二) kube-apiserver组件安装

    根据架构图,我们的apiserver部署在hdss7-21和hdss7-22上: 首先在hdss7-200上申请证书并拷贝到21和22上: 创建证书文件: # cd /opt/certs # vi c ...

  2. 计组CPU设计实验关键材料和关键设计

    我记得这是2016春季学期搞得,参考和学习了很多别人的东西,这里小小的总结一下,逻辑性还不是太强,还需要好好整理 首先是指令集 CPU架构 外部接线架构 指令格式 机器状态自动机 这部分忘了,汗 这部 ...

  3. Linux bash fi

    Linux bash fi if..else..fi allows to make choice based on the success or failure of a command. if..e ...

  4. window.navigator All In One

    window.navigator All In One navigator "use strict"; /** * * @author xgqfrms * @license MIT ...

  5. macOS 升级后导致 dart bug

    macOS 升级后导致 dart bug macOS 10.15.5 $ demo_app git:(master) flutter doctor # /Users/xgqfrms-mbp/Docum ...

  6. React 16.x Roadmap

    React 16.x Roadmap https://reactjs.org/blog/2018/11/27/react-16-roadmap.html https://reactjs.org/blo ...

  7. git & github & git clone & 'git clone' failed with status 128

    git & github & git clone & 'git clone' failed with status 128 'git clone' failed with st ...

  8. auto scroll bottom in js

    auto scroll bottom in js autoScrollToBottom() { let box = document.querySelector(`[data-dom="ch ...

  9. ng mock服务器数据

    angualr文档 in-memory-web-api 文档 安装 yarn add angular-in-memory-web-api -S src/app/app.module.ts import ...

  10. golang官方嵌入文件到可执行程序

    目录 前言 示例程序 嵌入文件直接访问 嵌入文件列表 总结 前言 在go官方出嵌入文件的方法前我在网上找过,并且自己还研究过,虽然没有问题,但是既然官方支持还是用起来吧. 看了下go源码embed/e ...