Java加密与解密的艺术~DESede实现

 

DESede 实现

/*** 2009-10-5*/
package org.zlex.chapter07_2;import java.security.Key;import javax.crypto.Cipher;
import javax.crypto.KeyGenerator;
import javax.crypto.SecretKey;
import javax.crypto.SecretKeyFactory;
import javax.crypto.spec.DESedeKeySpec;/*** DESede安全编码组件* * @author 梁栋* @version 1.0*/
public abstract class DESedeCoder {/*** 密钥算法*/public static final String KEY_ALGORITHM = "DESede";/*** 加密/解密算法 / 工作模式 / 填充方式* Java 6支持PKCS5PADDING填充方式* Bouncy Castle支持PKCS7Padding填充方式*/public static final String CIPHER_ALGORITHM = "DESede/ECB/PKCS5Padding";/*** 转换密钥* * @param key*            二进制密钥* @return Key 密钥* @throws Exception*/private static Key toKey(byte[] key) throws Exception {// 实例化DES密钥材料DESedeKeySpec dks = new DESedeKeySpec(key);// 实例化秘密密钥工厂SecretKeyFactory keyFactory = SecretKeyFactory.getInstance(KEY_ALGORITHM);// 生成秘密密钥SecretKey secretKey = keyFactory.generateSecret(dks);return secretKey;}/*** 解密* * @param data*            待解密数据* @param key*            密钥* @return byte[] 解密数据* @throws Exception*/public static byte[] decrypt(byte[] data, byte[] key) throws Exception {// 还原密钥Key k = toKey(key);/* * 实例化* 使用PKCS7Padding填充方式* Cipher.getInstance(CIPHER_ALGORITHM, "BC");*/Cipher cipher = Cipher.getInstance(CIPHER_ALGORITHM);// 初始化,设置为解密模式cipher.init(Cipher.DECRYPT_MODE, k);// 执行操作return cipher.doFinal(data);}/*** 加密* * @param data*            待加密数据* @param key*            密钥* @return byte[] 加密数据* @throws Exception*/public static byte[] encrypt(byte[] data, byte[] key) throws Exception {// 还原密钥Key k = toKey(key);/* * 实例化* 使用PKCS7Padding填充方式* Cipher.getInstance(CIPHER_ALGORITHM, "BC");*/Cipher cipher = Cipher.getInstance(CIPHER_ALGORITHM);// 初始化,设置为加密模式cipher.init(Cipher.ENCRYPT_MODE, k);// 执行操作return cipher.doFinal(data);}/*** 生成密钥 <br>* * @return byte[] 二进制密钥* @throws Exception*/public static byte[] initKey() throws Exception {// 实例化KeyGenerator kg = KeyGenerator.getInstance(KEY_ALGORITHM);/** DESede 要求密钥长度为 112位或168位*/kg.init(168);// 生成秘密密钥SecretKey secretKey = kg.generateKey();// 获得密钥的二进制编码形式return secretKey.getEncoded();}
}

DESede 使用示例

/*** 2008-6-11*/
package org.zlex.chapter07_2;import static org.junit.Assert.*;import org.apache.commons.codec.binary.Base64;
import org.junit.Test;/*** DESede安全编码组件校验* * @author 梁栋* @version 1.0*/
public class DESedeCoderTest {/*** 测试* * @throws Exception*/@Testpublic final void test() throws Exception {String inputStr = "DESede";byte[] inputData = inputStr.getBytes();System.err.println("原文:\t" + inputStr);// 初始化密钥byte[] key = DESedeCoder.initKey();System.err.println("密钥:\t" + Base64.encodeBase64String(key));// 加密inputData = DESedeCoder.encrypt(inputData, key);System.err.println("加密后:\t" + Base64.encodeBase64String(inputData));// 解密byte[] outputData = DESedeCoder.decrypt(inputData, key);String outputStr = new String(outputData);System.err.println("解密后:\t" + outputStr);// 校验assertEquals(inputStr, outputStr);}
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/496543.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

update-rc.d 更新 Linux 系统启动项 命令 用法详解

探究 Ubuntu 下的 update-rc.d 命令&#xff1a;http://www.linuxdiyf.com/linux/13362.html Update-rc.d && rc.local 管理 Ubuntu 的开机启动&#xff1a;http://www.linuxdiyf.com/linux/1057.html 通过 update-rc.d 来管理 Ubuntu 系统的自动启动程序&#xff1a;h…

合成艺术字二 :使用的透明类以及所用的颜色选择器JS(完整事列源码)

1.透明类 ImageToTrans using System.Drawing; using System.Drawing.Drawing2D; using System.Drawing.Imaging; using System.IO; using System.Runtime.InteropServices; using System.Collections; public static Bitmap MakeTransparentGif(Bitmap bitmap, Color color) …

推荐!神经进化才是深度学习未来的发展之路!

来源&#xff1a;全球人工智能过去几年时间里&#xff0c;我们有一个完整的团队致力于人工智能研究和实验。该团队专注于开发新的进化计算方法&#xff08;EC&#xff09;&#xff0c;包括设计人工神经网络架构、构建商业应用程序&#xff0c;以及使用由自然进化激发的方法来解…

mysql max字符串数值_针对字符串值的mysql:min()和max()。

我有一个连接两个表的SQL Select语句。主表包含产品的其他信息,并联接到第二个尺寸表。第二个表包含存储为字符串的非数字大小列表,其结构简单如下…sizeID主键sizename字符串大小值(即,小、中、大)size order用于排序大小顺序的整数值(即,size order为5表示大小大于size order…

linux 命令:ping、fping、gping、hping3、tracert、traceroute

From&#xff1a; Nmap、Netcat、Hping3工具对比&#xff1a;http://www.2cto.com/article/201210/158961.html ​hping3 命令&#xff1a;http://man.linuxde.net/hping3 示例&#xff1a;Testing firewall rules with Hping3 &#xff1a;https://www.docin.com/p-74538211…

Java加密与解密的艺术~数字签名~模型分析

甲方作为消息的发送方&#xff0c;乙方作为消息的接收方。假设甲乙双方在消息传递之前已经指定了要使的数字签名算法&#xff08;如RSA算法&#xff09;。为完成签名验证&#xff0c;甲乙双方需要以下操作&#xff1a; 1&#xff09;、由消息发送方&#xff08;甲方&#xff09…

BlazeDS入门教程-很详细-赞原创作者一个

什么是BlazeDS呢&#xff1f;BlazeDS是一个基于服务器的Java远程调用&#xff08;remoting&#xff09;和Web消息传递&#xff08;messaging&#xff09;技术&#xff0c;它能够使得后台的Java应用程序和运行在浏览器上的Flex应用程序相互通信。在各大搜索引擎里&#xff0c;关…

excel概率密度函数公式_标准正态分布密度函数公式

展开全部标准正态分布密度函数公式&#xff1a;正态曲线呈钟型62616964757a686964616fe58685e5aeb931333366306532&#xff0c;两头低&#xff0c;中间高&#xff0c;左右对称因其曲线呈钟形&#xff0c;因此人们又经常称之为钟形曲线。若随机变量X服从一个数学期望为μ、方差为…

2017-2018中国物联网产业全景图谱报告——物联网对产业深度变革已开启

来源&#xff1a;物联网智库丨公众号如果说2016年里物联网的产业生态各种要素已具备&#xff0c;那么2017年就是物联网对于国民经济产业变革的规模效应初显的一年&#xff0c;可以说是物联网对产业变革的元年。在这一过程中&#xff0c;通过二维生态图谱去了解过去一年的进展不…

linux命令终极系列awk

AWK man 手册&#xff1a;http://man.linuxde.net/awk AWK编程的内容极多&#xff0c;这里只罗列简单常用的用法&#xff0c;更多请参考 http://www.gnu.org/software/gawk/manual/gawk.html 简介 什么是awk? awk是一个强大的文本分析工具&#xff0c;相对于grep的查找&a…

Java加密与解密的艺术~数字签名~RSA实现

RSA 实现 /*** 2008-6-11*/ package org.zlex.chapter09_1;import java.security.Key; import java.security.KeyFactory; import java.security.KeyPair; import java.security.KeyPairGenerator; import java.security.PrivateKey; import java.security.PublicKey; import …

图灵2008年12月出版的计算机图书

《JavaScript设计模式》 《MySQL必知必会》 《实用Java教程&#xff1a;基于BlueJ的对象优先方法(第3版)》 《C#图解教程》 转载于:https://www.cnblogs.com/bookshop/archive/2008/12/21/1359397.html

mysql numeric float_sql 下,float和numeric

搜了下两者的区别&#xff0c;答案其实很明显:numeric支持最长38位长度的数字&#xff0c;只有在你要的数字的长度超过38位时才推荐使用float原因是&#xff0c;float在保存和提取&#xff0c;以及数学计算等方面&#xff0c;会产生于期待记过不一致的情况。为什么呢&#xff1…

科技部认定的独角兽名单来了!共164家

来源&#xff1a;中国证券报丨公众号 作者&#xff1a;杨洁今天上午&#xff0c; 科技部火炬中心、中关村管委会、长城战略咨询、中关村银行联合主办“2017中国独角兽企业发展报告”发布会。《2017中国独角兽企业发展报告》显示&#xff1a; 2017年中国独角兽企业共164家新晋62…

p0f - 被动探测操作系统工具

参考&#xff1a;http://lcamtuf.coredump.cx/p0f3/ p0f是一款被动探测工具&#xff0c;能够通过捕获并分析目标主机发出的数据包来对主机上的操作系统进行鉴别&#xff0c;即使是在系统上装有性能良好的防火墙的情况下也没有问题。。目前最新版本为3.09b。同时p0f在网络分析方…

《Head First 设计模式》专题上线

立即访问《Head First 设计模式》专题 我们为这本经典图书制作了专题&#xff0c;也想在此了解一下园子里有哪些朋友看过这本书。 --- 博客园团队 2008年12月26日 转载于:https://www.cnblogs.com/bookshop/archive/2008/12/26/1363084.html

Java加密与解密的艺术~数字签名~DSA实现

DSA 实现 /*** 2008-6-13*/ package org.zlex.chapter09_2;import java.security.Key; import java.security.KeyFactory; import java.security.KeyPair; import java.security.KeyPairGenerator; import java.security.PrivateKey; import java.security.PublicKey; import …

mysql临时表和永久表_SQL临时表和永久表

drop table #Tmp --删除临时表#Tmpcreate table #Tmp --创建临时表#Tmp(ID int IDENTITY (1,1) not null, --创建列ID,并且每次新增一条记录就会加1WokNo varchar(50),primary key (ID) --定义ID为临时表#Tmp的主键);Select * from #Tmp --查询…

tcpdump - 数据包进行截获的包分析工具

From&#xff1a;http://www.cnblogs.com/ggjucheng/archive/2012/01/14/2322659.html 30 分钟掌握 tcpdump&#xff1a;http://zhuanlan.51cto.com/art/201701/527498.htm Android tcpdump 下载&#xff1a;https://www.androidtcpdump.com/android-tcpdump/downloads tcpdum…

相持不下的争论:脑波,有用吗?

来源&#xff1a;原理、编译&#xff1a;糖兽在大脑中&#xff0c;存在着我们看不见的脑电活动。这些脑波是由在大脑周围大量存在神经细胞的协调发射而产生的&#xff0c;他们可以从大脑的前部传到后部&#xff0c;从大脑深处传到头皮。这种脑电活动被称为神经元振荡。有意思的…