`
renjie120
  • 浏览: 237676 次
  • 性别: Icon_minigender_1
  • 来自: 上海
博客专栏
D11bba82-ec4a-3d31-a3c0-c51130c62f1c
Java应用集锦
浏览量:22904
社区版块
存档分类
最新评论

java应用集锦6:字符串base64加密解密 MD5加密

    博客分类:
  • java
阅读更多

转载请注明出处: http://renjie120.iteye.com/

 

常见的两个字符串加密方法:base64用于邮件主体内容加密,MD5是使用很多的加密方法.

1.base64

package com.lsframe.util;

import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;

public class Base64 {
	private static sun.misc.BASE64Encoder encoder = new sun.misc.BASE64Encoder();
	private static sun.misc.BASE64Decoder decoder = new sun.misc.BASE64Decoder();

	/**
	 * base64加密字符串.
	 * 
	 * @param oldStr
	 * @return
	 */
	public static String encode(String oldStr) {
		return encoder.encode(oldStr.getBytes());
	}

	/**
	 * base64解密字符串.
	 * @param oldStr
	 * @return
	 * @throws IOException
	 */
	public static String decode(String oldStr) throws IOException {
		return new String(decoder.decodeBuffer(oldStr));
	}

	/**
	 * base64编码输入流.
	 * @param inputStream 输入流
	 * @param outputStream 输出流
	 * @throws IOException
	 */
	public static void encode(InputStream inputStream, OutputStream outputStream)
			throws IOException {
		encoder.encode(inputStream, outputStream);
		inputStream.close();
		outputStream.close();
	}

	
	/**
	 * base64解密输入流.
	 * @param inputStream
	 * @param outputStream
	 * @throws IOException
	 */
	public static void decode(InputStream inputStream, OutputStream outputStream)
			throws IOException {
		decoder.decodeBuffer(inputStream, outputStream);
		inputStream.close();
		outputStream.close();
	}

	/**
	 * base64加密文件.
	 * @param inFileName 源文件
	 * @param outFileName 新的文件
	 * @throws IOException
	 */
	public static void encode(String inFileName,String outFileName) throws IOException{
		File oldFile = new File(inFileName);
		File newFile = new File(outFileName);
		InputStream input = new BufferedInputStream( 
				new FileInputStream(oldFile)); 
		OutputStream out = new BufferedOutputStream(
				new FileOutputStream(newFile));
		Base64.encode(input, out);
	}
	
	/**
	 * base64解密文件.
	 * @param inFileName 源文件
	 * @param outFileName 新的文件
	 * @throws IOException
	 */
	public static void decode(String inFileName,String outFileName) throws IOException{
		File oldFile = new File(inFileName);
		File newFile = new File(outFileName);
		InputStream input = new BufferedInputStream( 
				new FileInputStream(oldFile)); 
		OutputStream out = new BufferedOutputStream(
				new FileOutputStream(newFile));
		Base64.decode(input, out);
	}
	
	public static void main(String[] a) throws IOException {
		Base64.encode("E:\\workplace\\testMyFrame\\bb.mp3","d:\\hah.base64");
		Base64.decode("d:\\hah.base64","d:\\ddd.mp3");
		System.out.println("ok");
	}
}

 2.MD5的加密方法:

public class MD5 {

	public String getMD5(byte[] source) {
		String s = null;
		char hexDigits[] = { // 用来将字节转换成 16 进制表示的字符
		'0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'a', 'b', 'c', 'd',
		'e', 'f' };
		try {
			java.security.MessageDigest md = java.security.MessageDigest
				.getInstance("MD5");
			md.update(source);
			// MD5 的计算结果是一个 128 位的长整数,
			byte tmp[] = md.digest(); 
			// 用字节表示就是 16 个字节
			char str[] = new char[16 * 2]; // 每个字节用 16 进制表示的话,使用两个字符,
			// 所以表示成 16 进制需要 32 个字符
			int k = 0; // 表示转换结果中对应的字符位置
			for (int i = 0; i < 16; i++) { // 从第一个字节开始,对 MD5 的每一个字节
				// 转换成 16 进制字符的转换
				byte byte0 = tmp[i]; // 取第 i 个字节
				str[k++] = hexDigits[byte0 >>> 4 & 0xf]; // 取字节中高 4 位的数字转换,
				// >>> 为逻辑右移,将符号位一起右移
				str[k++] = hexDigits[byte0 & 0xf]; // 取字节中低 4 位的数字转换
			}
			s = new String(str); // 换后的结果转换为字符串
		} catch (NoSuchAlgorithmException e) {
			e.printStackTrace();
		} catch (Exception e) {
			e.printStackTrace();
		}
		return s;
	}

	public static void main(String[] args) {
		MD5 md5 = new MD5();
		System.out.println(md5.getMD5("ABC".getBytes()));
		System.out.println(md5.getMD5("ABC".getBytes()));
	}
}

 

分享到:
评论

相关推荐

    C#加密解密集锦(内含png格式)

    MD5用于数据校验,Rijndael用于数据加密,而Unicode字符串的转换则确保了数据在加密前后的正确性。这种加密方法适用于对数据安全性有一定要求的应用,但需要注意的是,MD5在现代安全标准下已经不被视为足够安全,...

    java常用字符串函数集锦

    Java 中常用的字符串函数集锦 Java 中字符串是连串的字符,但是与许多其他的计算机语言将字符串作为字符数组处理不同,Java 将字符串作为 String 类型对象来处理。将字符串作为内置的对象处理允许 Java 提供十分...

    Java面试题集锦6:华为面试题 管理资料.pdf

    它的值一旦创建就不能改变,因此在需要频繁修改字符串内容时,使用StringBuilder或StringBuffer更为合适,因为这两个类提供了动态增长的机制。 3. **int和Integer的区别**:int是Java的基本数据类型,而Integer是其...

    Java面试集锦: Core Java Essentials

    在这本《Java面试集锦: Core Java Essentials》中,作者Arulkumaran Kumaraswami Pillai和Sivayini Arulkumaran深入探讨了Java平台、语言、类、对象、面向对象概念与原理、数据结构、算法和模式匹配基础,为读者准备...

    常用SQL字符串函数集锦.

    在SQL(结构化查询语言)中,字符串函数是用于处理文本数据的重要工具。它们可以帮助我们进行各种操作,如提取、转换、格式化和比较字符串。...希望这个字符串函数集锦能为你的SQL编程之路提供有力支持。

    基于NetBeans开发的java应用程序集锦6

    【标题】"基于NetBeans开发的Java应用程序集锦6"主要涵盖了使用NetBeans IDE进行Java应用程序开发的一些实例和实践。NetBeans是一个强大的开源集成开发环境,尤其适合Java开发者,提供了丰富的功能,包括代码编辑、...

    JAVA精华集锦.doc

    - `String` 的连接操作:`"a" + 4 + "c"` 在编译时会被优化为 `new StringBuffer().append("a").append(4).append("c").toString()`,这是因为Java会自动使用 `StringBuffer` 进行字符串连接以提高效率。...

    Java编程精选集锦

    Java编程精选集锦.pdf 这份资源集合了Java编程的核心知识点,是学习和提升Java技能的宝贵资料。Java作为一款广泛应用的面向对象编程语言,它的强大在于其跨平台性、高效性和稳定性。以下将深入探讨Java编程的一些...

    Java笔试题集锦:web\jsp\sevlet

    Java笔试题集锦主要涵盖了Java基础、Web技术以及Servlet等相关知识点。以下是对这些知识点的详细说明: 1. **MVC模式**:Model-View-Controller(MVC)是一种设计模式,用于分离应用程序的业务逻辑、用户界面和控制...

    sql字符串函数集锦

    ### SQL字符串函数集锦 #### 一、字符转换函数 **1. ASCII()** - **功能**: 返回给定字符表达式最左侧字符的ASCII码值。 - **语法**: `ASCII(character_expression)` - **示例**: 如果`character_expression`是'A'...

    php字符串函数集锦

    6. **trim()**,`ltrim()` 和 `rtrim()`:这三个函数用于去除字符串两侧、左侧或右侧的空白字符。`trim(" Hello World ")`将返回"Hello World"。 7. **str_replace()**:这个函数用于替换字符串中的某个子串。例如...

    基于NetBeans开发的java应用程序集锦9

    标题中的“基于NetBeans开发的Java应用程序集锦9”表明这是一个关于使用NetBeans IDE进行Java应用程序开发的资源集合,特别是第9个章节的内容。NetBeans是一个开源的集成开发环境(IDE),广泛用于编写Java应用程序...

    Java经典项目集锦

    【Java经典项目集锦】是Java编程学习的重要资源集合,涵盖了多个Java开发的经典案例和实践项目,旨在帮助Java初学者和进阶者深入理解和应用Java技术。这些项目不仅能够提升编程技能,还能够锻炼实际问题解决能力,...

    JAVA案例开发集锦pdf

    《JAVA案例开发集锦》是一本专注于Java编程实践的资源集合,它包含了多个精心设计的实例,旨在帮助读者深入理解Java语言的特性和应用。这本书的内容涵盖了从基础语法到高级特性,从简单程序到复杂系统的设计,是学习...

    VB加密算法代码集锦.rar

    这个加解密源码几乎包括了世界上几个最著名的加密算法:Blowfish、CryptAPI、DES、Gost、RC4、XOR、Skipjack、TEA、Twofish,曾获源码5星推荐 Business-strengthCompression.zip: 商用压缩+加密程序 ...

    MD5批量较验工具V3.0

    MD5的实际应用是对一段信息(字节串)产生Fingerprint(指纹码), 可以防止程序被他人“篡改”。其广泛用于加密和解密技术上...另外也可用作杀毒校验技术的一部分,使得重复扫描速度加快了N倍。 MD5较验工具只是EXCEL...

    基于NetBeans开发的java应用程序集锦1

    **Java与NetBeans开发平台简介** Java是一种广泛使用的面向对象的编程语言,以其跨平台、安全性高和可移植性等特点闻名。...总之,"基于NetBeans开发的Java应用程序集锦1"为Java初学者提供了一个全面的学习起点。

    js处理字符串中的汉字问题集锦

    在JavaScript(JS)编程中,处理字符串中的汉字问题是一项常见的任务。这主要涉及到对Unicode编码的理解,因为中文字符在JS中是以Unicode编码的形式存在的。以下是一些关于如何处理字符串中汉字问题的关键知识点: ...

Global site tag (gtag.js) - Google Analytics