转载请注明出处:
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()));
}
}
分享到:
相关推荐
MD5用于数据校验,Rijndael用于数据加密,而Unicode字符串的转换则确保了数据在加密前后的正确性。这种加密方法适用于对数据安全性有一定要求的应用,但需要注意的是,MD5在现代安全标准下已经不被视为足够安全,...
Java 中常用的字符串函数集锦 Java 中字符串是连串的字符,但是与许多其他的计算机语言将字符串作为字符数组处理不同,Java 将字符串作为 String 类型对象来处理。将字符串作为内置的对象处理允许 Java 提供十分...
它的值一旦创建就不能改变,因此在需要频繁修改字符串内容时,使用StringBuilder或StringBuffer更为合适,因为这两个类提供了动态增长的机制。 3. **int和Integer的区别**:int是Java的基本数据类型,而Integer是其...
在这本《Java面试集锦: Core Java Essentials》中,作者Arulkumaran Kumaraswami Pillai和Sivayini Arulkumaran深入探讨了Java平台、语言、类、对象、面向对象概念与原理、数据结构、算法和模式匹配基础,为读者准备...
在SQL(结构化查询语言)中,字符串函数是用于处理文本数据的重要工具。它们可以帮助我们进行各种操作,如提取、转换、格式化和比较字符串。...希望这个字符串函数集锦能为你的SQL编程之路提供有力支持。
【标题】"基于NetBeans开发的Java应用程序集锦6"主要涵盖了使用NetBeans IDE进行Java应用程序开发的一些实例和实践。NetBeans是一个强大的开源集成开发环境,尤其适合Java开发者,提供了丰富的功能,包括代码编辑、...
- `String` 的连接操作:`"a" + 4 + "c"` 在编译时会被优化为 `new StringBuffer().append("a").append(4).append("c").toString()`,这是因为Java会自动使用 `StringBuffer` 进行字符串连接以提高效率。...
Java编程精选集锦.pdf 这份资源集合了Java编程的核心知识点,是学习和提升Java技能的宝贵资料。Java作为一款广泛应用的面向对象编程语言,它的强大在于其跨平台性、高效性和稳定性。以下将深入探讨Java编程的一些...
Java笔试题集锦主要涵盖了Java基础、Web技术以及Servlet等相关知识点。以下是对这些知识点的详细说明: 1. **MVC模式**:Model-View-Controller(MVC)是一种设计模式,用于分离应用程序的业务逻辑、用户界面和控制...
### SQL字符串函数集锦 #### 一、字符转换函数 **1. ASCII()** - **功能**: 返回给定字符表达式最左侧字符的ASCII码值。 - **语法**: `ASCII(character_expression)` - **示例**: 如果`character_expression`是'A'...
6. **trim()**,`ltrim()` 和 `rtrim()`:这三个函数用于去除字符串两侧、左侧或右侧的空白字符。`trim(" Hello World ")`将返回"Hello World"。 7. **str_replace()**:这个函数用于替换字符串中的某个子串。例如...
标题中的“基于NetBeans开发的Java应用程序集锦9”表明这是一个关于使用NetBeans IDE进行Java应用程序开发的资源集合,特别是第9个章节的内容。NetBeans是一个开源的集成开发环境(IDE),广泛用于编写Java应用程序...
【Java经典项目集锦】是Java编程学习的重要资源集合,涵盖了多个Java开发的经典案例和实践项目,旨在帮助Java初学者和进阶者深入理解和应用Java技术。这些项目不仅能够提升编程技能,还能够锻炼实际问题解决能力,...
《JAVA案例开发集锦》是一本专注于Java编程实践的资源集合,它包含了多个精心设计的实例,旨在帮助读者深入理解Java语言的特性和应用。这本书的内容涵盖了从基础语法到高级特性,从简单程序到复杂系统的设计,是学习...
这个加解密源码几乎包括了世界上几个最著名的加密算法:Blowfish、CryptAPI、DES、Gost、RC4、XOR、Skipjack、TEA、Twofish,曾获源码5星推荐 Business-strengthCompression.zip: 商用压缩+加密程序 ...
MD5的实际应用是对一段信息(字节串)产生Fingerprint(指纹码), 可以防止程序被他人“篡改”。其广泛用于加密和解密技术上...另外也可用作杀毒校验技术的一部分,使得重复扫描速度加快了N倍。 MD5较验工具只是EXCEL...
**Java与NetBeans开发平台简介** Java是一种广泛使用的面向对象的编程语言,以其跨平台、安全性高和可移植性等特点闻名。...总之,"基于NetBeans开发的Java应用程序集锦1"为Java初学者提供了一个全面的学习起点。
在JavaScript(JS)编程中,处理字符串中的汉字问题是一项常见的任务。这主要涉及到对Unicode编码的理解,因为中文字符在JS中是以Unicode编码的形式存在的。以下是一些关于如何处理字符串中汉字问题的关键知识点: ...