Java Cipher类 DES算法(加密与解密)

1.加密解密类

import java.security.*;

import javax.crypto.*;

import java.io.*;

//对称加密器
public class CipherMessage {
private String algorithm; // 算法,如DES
private Key key; // 根据算法对应的密钥
private String plainText; // 明文 KeyGenerator keyGenerator;
Cipher cipher; // 函数进行初始化
CipherMessage(String alg, String msg) {
algorithm = alg;
plainText = msg;
} // 加密函数,将原文加密成密文
public byte[] CipherMsg() {
byte[] cipherText = null; try {
// 生成Cipher对象
cipher = Cipher.getInstance(algorithm);
// 用密钥加密明文(plainText),生成密文(cipherText)
cipher.init(Cipher.ENCRYPT_MODE, key); // 操作模式为加密(Cipher.ENCRYPT_MODE),key为密钥
cipherText = cipher.doFinal(plainText.getBytes()); // 得到加密后的字节数组
// String str = new String(cipherText);
} catch (Exception e) {
e.printStackTrace();
}
return cipherText;
} // 解密函数,将密文解密回原文
public String EncipherMsg(byte[] cipherText, Key k) {
byte[] sourceText = null; try {
cipher.init(Cipher.DECRYPT_MODE, k); // 操作模式为解密,key为密钥
sourceText = cipher.doFinal(cipherText);
} catch (Exception e) {
e.printStackTrace();
}
return new String(sourceText); } // 生成密钥
public Key initKey() {
try {
// 初始化密钥key
keyGenerator = KeyGenerator.getInstance(algorithm);
keyGenerator.init(56); // 选择DES算法,密钥长度必须为56位
key = keyGenerator.generateKey(); // 生成密钥
} catch (Exception ex) {
ex.printStackTrace();
}
return key;
} // 获取Key类型的密钥
public Key getKey() {
return key;
} // 获取Key类型的密钥
public Key getKey(byte[] k) {
try {
key = cipher.unwrap(k, algorithm, Cipher.DECRYPT_MODE);
} catch (Exception ex) {
ex.printStackTrace();
}
return key;
} // 获取密钥包装成byte[]类型的
public byte[] getBinaryKey(Key k) {
byte[] bk = null;
try {
bk = cipher.wrap(k);
} catch (Exception ex) {
ex.printStackTrace();
}
return bk;
}
}

2.测试

import java.security.*;

import javax.crypto.*;

import java.io.*;

public class TestMain {

    public static void main(String[] args) {
String algorithm = "DES"; // 定义加密算法,可用 DES,DESede,Blowfish
String message = "Hello World. 这是待加密的信息"; // 生成个DES密钥
Key key; CipherMessage cm = new CipherMessage(algorithm, message);
key = cm.initKey();
byte[] msg = cm.CipherMsg();
System.out.println("加密后的密文为:" + new String(msg));
// System.out.println("密钥为:"+new String(cm.getBinaryKey(key))); System.out.println(cm.getBinaryKey(key));
System.out.println("解密密文为:" + cm.EncipherMsg(msg, key)); } }

【转】Java Cipher类 DES算法(加密与解密)的更多相关文章

  1. java sm4国密算法加密、解密

      java sm4国密算法加密.解密 CreationTime--2018年7月5日09点20分 Author:Marydon 1.准备工作 所需jar包: bcprov-jdk15on-1.59. ...

  2. Java中使用RSA算法加密

    Java中使用RSA算法加密 概述 RSA加密算法是一种非对称加密算法 RSA加密的方式 使用公钥加密的数据,利用私钥进行解密 使用私钥加密的数据,利用公钥进行解密 RSA是一对密钥.分别是公钥和私钥 ...

  3. 基于DES算法加密的防撞库密码系统项目总结

    项目内容:基于DES算法加密的防撞库密码系统 小组名:zqhzkzkj 目标:1.对用户输入的8位字符进行DES加密,要求用户输入8位密钥 2.对于不同的网站,不同的用户名生成不同的密码 小组成员:周 ...

  4. DES的加密与解密算法(Python实现)

    DES的加密与解密算法(Python实现) 密码学实验:实现了DES的简单的加密和解密算法,DES算法的相关资料网上很多,这里不再赘述,仅仅贴出源代码给大家分享,源码中包含很多汉字注释,相信大家都是可 ...

  5. ORACLE 字段AES算法加密、解密

    ORACLE 字段AES算法加密.解密(解决中文乱码问题)2014年02月12日 17:13:37 华智互联 阅读数:97971.加解密函数入口 CREATE OR REPLACE FUNCTION ...

  6. 【java工具类】AES加密解密

    百度百科一下,AES:高级加密标准(英语:Advanced Encryption Standard,缩写:AES),在密码学中又称Rijndael加密法,是美国联邦政府采用的一种区块加密标准.这个标准 ...

  7. JAVA的对称加密算法AES——加密和解密

    出自: http://blog.csdn.net/hongtashan11/article/details/6599645 http://www.cnblogs.com/liunanjava/p/42 ...

  8. java 实现文件内容的加密和解密

    package com.umapp.test; import java.io.FileInputStream; import java.io.FileOutputStream; import java ...

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

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

随机推荐

  1. mysql 1069 数据库无法启动解决办法

    mysql无缘无故的启动不了了. 在控制台里面用root连接,报错10061. 在服务管理里面启动,报错1069. 在网上找了一些解决方法,删除my.ini之类的,都无效.后来在百度经验里面找到了可行 ...

  2. 卸载openjdk安装java后,netbeans启动不了

    Cannot find java. Please use the --jdkhome switch. 默认的jdkhome不存在了,所以重新指定一下就可以了. 修改 /netbeans-8.0/etc ...

  3. 《深入分析Java Web技术内幕》读后感(servlet)

    见书第九章 P243 在Tomcat的容器等级中,Context容器直接管理Servlet在容器中的包装类Wrapper,所以Context容器如何运行将直接影响Servlet的工作方式. Servl ...

  4. Oracle tns 协议

    下面是翻译国外的一篇博客,原文连接如下: https://thesprawl.org/research/oracle-tns-protocol/ 简介 TNS(Transparent Network ...

  5. The Truth About GCHandles

    I've heard several people asking why GCHandle doesn't implement IDisposable, considering it wraps an ...

  6. Image Processing - Pseudo(False) Color Processing

    最近在一个项目中有需要用到将图片从GrayScale转为FalseColor,然而百度了一下Halcon 伪彩色等关键字均找不到相关答案,倒是有很多OpenCV和Matlab的...后来在搜索中看到了 ...

  7. Excel .net读取

    public void LoadData(string StyleSheet) { string strCon = "Provider=Microsoft.Jet.OLEDB.4.0;Dat ...

  8. ms sql server line feed

    多行文本换行: SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO -- ======================================== ...

  9. [UE4]如何替换角色Mesh上的Material材质

    http://www.dawnarc.com/2016/10/ue4%E5%A6%82%E4%BD%95%E6%9B%BF%E6%8D%A2%E8%A7%92%E8%89%B2mesh%E4%B8%8 ...

  10. python——基本数据类型1——简介

    列表 列表是可变数据类型.是序列类型; 列表的内容可以是数字,字符串和其它列表: 0第一个元素,-1最后一个元素, 定义连续列表 li = list(range(1,10,2)) 列表取值: 取 b: ...