java加密算法--MD5加密和哈希散列带秘钥加密算法源码_java

java加密算法--MD5加密和哈希散列带秘钥加密算法源码

             最近学习加密算法的知识,利用MD5 加密,百度一下网上资料很多,不是很详细,这里就整理下如何实现用MD5加密和 哈希散列带秘钥加密算法,大家可以看下。

实现代码:

package com.ompa.common.utils;

import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;

import javax.crypto.Mac;
import javax.crypto.SecretKey;
import javax.crypto.spec.SecretKeySpec;

/**
* 采用MD5加密
*
* @author zhangcd
* @date 2016-4-29
*/
public class EncryptUtil { 

private static final String MAC_NAME = "HmacSHA1";
private static final String ENCODING = "UTF-8";
private static final String key = "iloveyou";

/***
* MD5加码 生成32位md5码
*/
public static String string2MD5(String inStr){
MessageDigest md5 = null;
try{
md5 = MessageDigest.getInstance("MD5");
}catch (Exception e){
System.out.println(e.toString());
e.printStackTrace();
return "";
}
char[] charArray = inStr.toCharArray();
byte[] byteArray = new byte[charArray.length]; 

for (int i = 0; i < charArray.length; i++)
byteArray[i] = (byte) charArray[i];
byte[] md5Bytes = md5.digest(byteArray);
StringBuffer hexValue = new StringBuffer();
for (int i = 0; i < md5Bytes.length; i++){
int val = ((int) md5Bytes[i]) & 0xff;
if (val < 16)
hexValue.append("0");
hexValue.append(Integer.toHexString(val));
}
return hexValue.toString(); 

} 

/***
* MD5加密 生成32位md5码
*/
public static String stringMD5(String inStr){
return string2MD5(string2MD5(inStr)); 

}

/**
* 加密解密算法
*/
public static String convertMD5(String inStr){ 

char[] a = inStr.toCharArray();
for (int i = 0; i < a.length; i++){
a[i] = (char) (a[i] ^ 't');
}
String s = new String(a);
return s; 

} 

/**
* HMAC-SHA1
* @param encryptText
* @param encryptKey
* @return
* @throws Exception
*/
public static String HmacSHA1Encrypt(String encryptText, String encryptKey) throws Exception
{
byte[] data=encryptKey.getBytes(ENCODING);
SecretKey secretKey = new SecretKeySpec(data, MAC_NAME);
Mac mac = Mac.getInstance(MAC_NAME);
mac.init(secretKey); 

byte[] text = encryptText.getBytes(ENCODING);
byte[] str = mac.doFinal(text);
// Create Hex String
StringBuffer hexString = new StringBuffer();
// 字节数组转换为 十六进制 数
for (int i = 0; i < str.length; i++) {
String shaHex = Integer.toHexString(str[i] & 0xFF);
if (shaHex.length() < 2) {
hexString.append(0);
}
hexString.append(shaHex);
}
return hexString.toString();
} 

public static String convertSHA1(String instr){
try {
return HmacSHA1Encrypt(instr,key);
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
return "";
}
}

// 测试主函数
public static void main(String args[]) throws Exception {
//哈希散列带秘钥加密
String tt = convertSHA1("123456");
System.out.println(tt);

//MD5加密
String s = new String("123456");
System.out.println("原始:" + s);
System.out.println("MD5后:" + string2MD5(s));
System.out.println("MD5加密后:" + stringMD5(s));
}
}

感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!

以上是小编为您精心准备的的内容,在的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索java
, MD5加密
MD5加密实例
散列表和哈希表、哈希散列、哈希表线性探测再散列、哈希表二次探测再散列、哈希散列算法,以便于您获取更多的相关知识。

时间: 2024-08-21 17:55:16

java加密算法--MD5加密和哈希散列带秘钥加密算法源码_java的相关文章

Java生成MD5加密字符串代码实例_java

      (1)一般使用的数据库中都会保存用户名和密码,其中密码不使用明码保存.     有时候用MD5密码,很多语言都提供了将字符串生成为MD5密码的方法或函数.MD5的加密算法是公开的.     有时候也可以用自己的字符串加密算法,这种加密算法是只有自己知道的. (2)破解MD5的过程就是先算好大量或者所有可能的字符串的MD5数值,之后进行查询就可以破解.虽然有些网站规定了密码的位数在6~20位之间,但是要事先计算这么多是字符串并有效的组织存储.查询还是相当麻烦,相当慢的. 因为MD5的位

Java实现MD5加密的方法_java

本文实例讲述了Java实现MD5加密的方法.分享给大家供大家参考.具体实现方法如下: import java.security.MessageDigest; import java.security.NoSuchAlgorithmException; public class MD5HashUtil { private MessageDigest md = null; private static MD5HashUtil md5 = null; private static final char

解密-java的MD5加密怎么改成C++的代码

问题描述 java的MD5加密怎么改成C++的代码 import java.security.MessageDigest; public class MD5andKL { // MD5加码.32位 public static String MD5(String inStr) { MessageDigest md5 = null; try { md5 = MessageDigest.getInstance("MD5"); } catch (Exception e) { System.ou

java的md5加密类(zt)

加密 java的md5加密类 MD5算法是将数据进行不可逆加密的算法有较好的安全性,在国内如寿信的安全支付平台就采用此算法. 源代码如下/************************************************MD5 算法的Java BeanLast Modified:10,Mar,2001*************************************************/ import java.lang.reflect.*; /************

Java实现MD5加密解密类

首先说明一下系统自带的MD5加密:           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摘要算法的 Messa

java用md5加密同一个签名后结果不一样??

问题描述 java用md5加密同一个签名后结果不一样?? 需要验证签名是否一样,用md5加密后得到的签名跟对方报文中传过来的加密后的签名不一样?? 解决方案 用winmd5之类的软件算下,看下你的程序和标准的是否一致,特别注意你的文件流的读取,还是按照文本文件读取的. 解决方案二: 你确定对方加密的时候也是JAVA加密的吗?C#,JAVA等不同的语言加密有时候是不一样的 解决方案三: 可能是编码类型的问题 解决方案四: 确定双方使用的版本,与加密过程是一样的.否则,产生不一样的结果很正常. 解决

php-java 利用md5生成带秘钥的哈希值 有相应的函数吗

问题描述 java 利用md5生成带秘钥的哈希值 有相应的函数吗 哪位大牛知道php的 hash_hmac ( string $algo , string $data , string $key [, bool $raw_output = false ] ),在java中有对应的函数吗 解决方案 JAVA生成HMAC-SHA1数据签名 解决方案二: 上面的SHA1的,还有HMAC-MD5 算法的java实例和BASE64,MD5,SHA,HMAC加密解决算法 解决方案三: Java实现MD5加密

java 密码MD5加密

package com.sunnylocus.util;      import java.security.MessageDigest;      /**    * 对密码进行加密和验证的类   */   public class CipherUtil{              //十六进制下数字到字符的映射数组       private final static String[] hexDigits = {"0", "1", "2", &

java实现md5加密示例_java

复制代码 代码如下: /**  * 实现MD5加密  *  */ public class MD5 {    /**   * 获取加密后的字符串   * @param input   * @return   */  public static String stringMD5(String pw) {   try {               // 拿到一个MD5转换器(如果想要SHA1参数换成"SHA1")          MessageDigest messageDigest