java加密MD5,DES

des,可以直接拿过去用的,,,不用深入了解算法的整个过程

package com.hotel.EncryptionAndDecryption;

import java.io.FileInputStream;

import java.io.FileOutputStream;

import java.io.InputStream;

import java.io.OutputStream;

import java.security.InvalidKeyException;

import java.security.Key;

import java.security.NoSuchAlgorithmException;

import java.security.SecureRandom;

import java.security.spec.InvalidKeySpecException;

import javax.crypto.Cipher;

import javax.crypto.CipherInputStream;

import javax.crypto.CipherOutputStream;

import javax.crypto.KeyGenerator;

import javax.crypto.SecretKey;

import javax.crypto.SecretKeyFactory;

import javax.crypto.spec.DESKeySpec;

import sun.misc.BASE64Decoder;

import sun.misc.BASE64Encoder;

/**

* @author jxj

* @category DES加密,原理未懂,直接拿来用。

* */

public class DES {

Key key;

public DES() {

}

public DES(String str) {

setKey(str); // 生成密匙

}

public Key getKey() {

return key;

}

public void setKey(Key key) {

this.key = key;

}

/**

* 根据参数生成 KEY

*/

public void setKey(String strKey) {

try {

KeyGenerator _generator = KeyGenerator.getInstance("DES");

_generator.init(new SecureRandom(strKey.getBytes()));

this.key = _generator.generateKey();

_generator = null;

} catch (Exception e) {

System.out.print("error in generator key!!");

}

}

/**

* 使用SecretKeyFactory根据参数生成 KEY

*/

// private SecretKey generateKey(String secretKey)

// throws NoSuchAlgorithmException, InvalidKeyException,

// InvalidKeySpecException {

// SecretKeyFactory keyFactory = SecretKeyFactory.getInstance("DES");

// DESKeySpec keySpec = new DESKeySpec(secretKey.getBytes());

// keyFactory.generateSecret(keySpec);

// return keyFactory.generateSecret(keySpec);

// }

/**

* 加密 String 明文输入 ,String 密文输出

*/

public String encryptStr(String strMing) {

byte[] byteMi = null;

byte[] byteMing = null;

String strMi = "";

BASE64Encoder base64en = new BASE64Encoder();

try {

byteMing = strMing.getBytes("UTF-8");

byteMi = this.encryptByte(byteMing);

strMi = base64en.encode(byteMi);

} catch (Exception e) {

} finally {

base64en = null;

byteMing = null;

byteMi = null;

}

return strMi;

}

/**

* 解密 以 String 密文输入 ,String 明文输出

*

* @param strMi

* @return

*/

public String decryptStr(String strMi) {

BASE64Decoder base64De = new BASE64Decoder();

byte[] byteMing = null;

byte[] byteMi = null;

String strMing = "";

try {

byteMi = base64De.decodeBuffer(strMi);

byteMing = this.decryptByte(byteMi);

strMing = new String(byteMing, "UTF-8");

} catch (Exception e) {

System.out.print("error in decryptStr!!");

} finally {

base64De = null;

byteMing = null;

byteMi = null;

}

return strMing;

}

/**

* 加密以 byte[] 明文输入 ,byte[] 密文输出

*

* @param byteS

* @return

*/

private byte[] encryptByte(byte[] byteS) {

byte[] byteFina = null;

Cipher cipher;

try {

cipher = Cipher.getInstance("DES");

cipher.init(Cipher.ENCRYPT_MODE, key);

byteFina = cipher.doFinal(byteS);

} catch (Exception e) {

} finally {

cipher = null;

}

return byteFina;

}

/**

* 解密以 byte[] 密文输入 , 以 byte[] 明文输出

*

* @param byteD

* @return

*/

private byte[] decryptByte(byte[] byteD) {

Cipher cipher;

byte[] byteFina = null;

try {

cipher = Cipher.getInstance("DES");

cipher.init(Cipher.DECRYPT_MODE, key);

byteFina = cipher.doFinal(byteD);

} catch (Exception e) {

System.out.print("error in decryptByte!!");

} finally {

cipher = null;

}

return byteFina;

}

/**

* 文件 file 进行加密并保存目标文件 destFile 中

*

* @param file

*            要加密的文件 如 c:/test/srcFile.txt

* @param destFile

*            加密后存放的文件名 如 c:/ 加密后文件 .txt

*/

public void encryptFile(String file, String destFile) throws Exception {

Cipher cipher = Cipher.getInstance("DES");

// cipher.init(Cipher.ENCRYPT_MODE, getKey());

cipher.init(Cipher.ENCRYPT_MODE, this.key);

InputStream is = new FileInputStream(file);

OutputStream out = new FileOutputStream(destFile);

CipherInputStream cis = new CipherInputStream(is, cipher);

byte[] buffer = new byte[1024];

int r;

while ((r = cis.read(buffer)) > 0) {

out.write(buffer, 0, r);

}

cis.close();

is.close();

out.close();

}

/**

* 文件采用 DES 算法解密文件

*

* @param file

*            已加密的文件 如 c:/ 加密后文件 .txt *

* @param destFile

*            解密后存放的文件名 如 c:/ test/ 解密后文件 .txt

*/

public void decryptFile(String file, String dest) throws Exception {

Cipher cipher = Cipher.getInstance("DES");

cipher.init(Cipher.DECRYPT_MODE, this.key);

InputStream is = new FileInputStream(file);

OutputStream out = new FileOutputStream(dest);

CipherOutputStream cos = new CipherOutputStream(out, cipher);

byte[] buffer = new byte[1024];

int r;

while ((r = is.read(buffer)) >= 0) {

cos.write(buffer, 0, r);

}

cos.close();

out.close();

is.close();

}

public String getDecryptFile(String file) throws Exception {

InputStream is = new FileInputStream(file);

byte[] buffer = new byte[1024];

is.read(buffer);

is.close();

return new String(buffer, "UTF-8");

}

public static void main(String[] args) throws Exception {

DES des = new DES("1234567");

// DES 加密文件

// des.encryptFile("G:/test.doc", "G:/ 加密 test.doc");

//DES 解密文件

// des.decryptFile("G:/ 加密 test.doc", "G:/ 解密 test.doc");

String str1 = " 要加密的字符串 test";

// DES 加密字符串

String str2 = des.encryptStr(str1);

// DES 解密字符串

String deStr = des.decryptStr(str2);

System.out.println(" 加密前: " + str1);

System.out.println(" 加密后: " + str2);

System.out.println(" 解密后: " + deStr);

}

}

MD5加密

package test.md5;

import java.security.MessageDigest;

public class MD5Util {

public final static String MD5(String s) {

char hexDigits[]={‘0‘,‘1‘,‘2‘,‘3‘,‘4‘,‘5‘,‘6‘,‘7‘,‘8‘,‘9‘,‘A‘,‘B‘,‘C‘,‘D‘,‘E‘,‘F‘};

try {

byte[] btInput = s.getBytes();

// 获得MD5摘要算法的 MessageDigest 对象

MessageDigest mdInst = MessageDigest.getInstance("MD5");

// 使用指定的字节更新摘要

mdInst.update(btInput);

// 获得密文

byte[] md = mdInst.digest();

// 把密文转换成十六进制的字符串形式

int j = md.length;

char str[] = new char[j * 2];

int k = 0;

for (int i = 0; i < j; i++) {

byte byte0 = md[i];

str[k++] = hexDigits[byte0 >>> 4 & 0xf];

str[k++] = hexDigits[byte0 & 0xf];

}

return new String(str);

} catch (Exception e) {

e.printStackTrace();

return null;

}

}

public static void main(String[] args) {

System.out.println(MD5Util.MD5("20121221"));

System.out.println(MD5Util.MD5("加密"));

}

}

java加密MD5,DES,布布扣,bubuko.com

时间: 2024-10-21 14:25:48

java加密MD5,DES的相关文章

JAVA加密解密DES对称加密算法

1 下面用DES对称加密算法(设定一个密钥,然后对所有的数据进行加密)来简单举个例子. 2 3 首先,生成一个密钥KEY. 4 我把它保存到key.txt中.这个文件就象是一把钥匙.谁拥有它,谁就能解开我们的类文件.代码参考如下: 5 package com.neusoft.jiami; 6 import Java.io.File; 7 import java.io.FileOutputStream; 8 import java.security.SecureRandom; 9 import j

◆JAVA加密解密-DES

DES算法提供CBC, OFB, CFB, ECB四种模式,MAC是基于ECB实现的. 一.数据补位 DES数据加解密就是将数据按照8个字节一段进行DES加密或解密得到一段8个字节的密文或者明文,最后一段不足8个字节,按照需求补足8个字节(通常补00或者FF,根据实际要求不同)进行计算,之后按照顺序将计算所得的数据连在一起即可. 这里有个问题就是为什么要进行数据补位?主要原因是DES算法加解密时要求数据必须为8个字节. 二.ECB模式 DES ECB(电子密本方式)其实非常简单,就是将数据按照8

Java 加密解密 对称加密算法 非对称加密算法 MD5 BASE64 AES RSA

[前言] 本文简单的介绍了加密技术相关概念,最后总结了java中现有的加密技术以及用法和样例 [最简单的加密] 1.简单的概念 明文:加密前的信息 密文:机密后的信息 算法:加密或解密的算法 密钥:算法使用的钥匙(读作miyao.正确应该是miyue,可是大家都读miyao) 2.简单的样例 将123456每位数字都加1后得到234567, 当中123456就是明文.234567就是密文.加密密钥就是1,加密算法是每位加 3.对称加密和非对称加密 以上为例. 123456-->234567的加密

Java加密技术(一)——BASE64与单向加密算法MD5&amp;SHA&amp;MAC

http://snowolf.iteye.com/blog/379860 加密解密,曾经是我一个毕业设计的重要组件.在工作了多年以后回想当时那个加密.解密算法,实在是太单纯了.     言归正传,这里我们主要描述Java已经实现的一些加密解密算法,最后介绍数字证书.     如基本的单向加密算法: BASE64 严格地说,属于编码格式,而非加密算法 MD5(Message Digest algorithm 5,信息摘要算法) SHA(Secure Hash Algorithm,安全散列算法) H

Java加密技术(一)——BASE64与单向加密算法MD5&SHA&MAC

加密解密,曾经是我一个毕业设计的重要组件.在工作了多年以后回想当时那个加密.解密算法,实在是太单纯了. 言归正传,这里我们主要描述Java已经实现的一些加密解密算法,最后介绍数字证书. 如基本的单向加密算法: BASE64 严格地说,属于编码格式,而非加密算法 MD5(Message Digest algorithm 5,信息摘要算法) SHA(Secure Hash Algorithm,安全散列算法) HMAC(Hash Message Authentication Code,散列消息鉴别码)

Java加密技术(二)——对称加密算法DES&AES

接下来我们介绍对称加密算法,最常用的莫过于DES数据加密算法. DES DES-Data Encryption Standard,即数据加密算法.是IBM公司于1975年研究成功并公开发表的.DES算法的入口参数有三个:Key.Data.Mode.其中Key为8个字节共64位,是DES算法的工作密钥;Data也为8个字节64位,是要被加密或被解密的数据;Mode为DES的工作方式,有两种:加密或解密. DES算法把64位的明文输入块变为64位的密文输出块,它所使用的密钥也是64位. 通过java

des加密解密——java加密,php解密

最近在做项目中,遇到des加密解密的问题. 场景是安卓app端用des加密,php这边需要解密.之前没有接触过des这种加密解密算法,但想着肯定会有demo.因此百度,搜了代码来用.网上代码也是鱼龙混杂,好不容易测试在php这边测试加密和解密成功了.为确保安卓app端提交过来的加密参数能够解密出来,给定安卓人员一个字符串,让他们把des加密后的字符串给我,在php这边解密.结果一看,加密出来的字符串跟我这边加密出来的结果不一致,自然是解密不出来. 要来java的des算法代码,研究加密的过程,其

JAVA中MD5加密实现

MD5加密实现  结 package com.pb; import java.io.UnsupportedEncodingException; import java.security.MessageDigest; import java.security.NoSuchAlgorithmException; import java.util.Scanner; /* * 验证MD5 * 1.初始化MessageDigest信息摘要对象 * 2.传入需要计算的字符串更新摘要信息 * 3.计算信息摘要

(iOS)Base64加密和DES加密、以及JAVA和iOS中DES加密统一性问题

我们在项目中为了安全方面的考虑,通常情况下会选择一种加密方式对需要安全性的文本进行加密,而Base64加密和DES64加密是常用的加密算法.我记得我在前一个项目中使用的就是这两种加密算法的结合:Base64 + DES加密.当然这需要移动端和后台服务器做一个统一. 1.Base64加解密 值得一提的是:apple提供了基础的Base64加解密算法.这样我们就可以直接使用方法去实现Base64加解密.先看一下apple都提供了哪些方法: @interface NSData (NSDataBase6