首页 > 编程知识 正文

JAVA实现MD5带盐加密_MD5加盐加密

时间:2023-05-05 13:34:37 阅读:188158 作者:4965

package com.chauvet.utils;

import java.security.NoSuchAlgorithmException;

import java.util.Random;

/***

public class MD5Util {

private final String chars = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_.";

private final String ikey = "-x6g6ZWm2G9g_vr0Bo.pOq3kRIxwangxiaowei";

private static String key = "myNameIsChauvet20160824";// 盐

/**

public String encrypt(String txt,String key){

Random random = new Random();

int nh1 = Math.abs(random.nextInt(64));

int nh2 = Math.abs(random.nextInt(64));

int nh3 = Math.abs(random.nextInt(64));

char ch1 = chars.toCharArray()[nh1];

char ch2 = chars.toCharArray()[nh2];

char ch3 = chars.toCharArray()[nh3];

int nhnum = nh1 + nh2 + nh3;

int knum = 0;

for(int i=0;i

knum +=(int)key.toCharArray()[i];

String mdKey = null;

try {

mdKey = MD5.MD5Encode(MD5.MD5Encode(MD5.MD5Encode(key+ch1)+ch2+ikey)+ch3).substring((int)(nhnum%8),(int)(nhnum%8)+(int)(knum%8 + 16));

} catch (NoSuchAlgorithmException e) {

e.printStackTrace();

}

String tmp = "";

int j=0;int k = 0;

int tlen = txt.length();

int klen = mdKey.length();

for (int i=0; i

k = k == klen ? 0 : k;

j = (nhnum+chars.indexOf(txt.toCharArray()[i])+((int)(mdKey.toCharArray()[k++])))%64;

}

int tmplen = tmp.length();

br.append(tmp);

br.insert(nh2 % 调皮的电灯胆, ch3);

br2.append(tmp);

br2.insert(nh1 % 调皮的电灯胆, ch2);

br3.append(tmp);

br3.insert(knum % 调皮的电灯胆, ch1);

return tmp;

}

/**

public String decrypt(String txt,String key){

int knum = 0;

int tlen = txt.length();

for(int i=0;i

knum +=(int)key.toCharArray()[i];

char ch1 = txt.toCharArray()[knum % tlen];

int nh1 = chars.indexOf(ch1);

br.append(txt);

int ttt1 = knum % tlen--;

char ch2 = txt.toCharArray()[nh1 % tlen];

int nh2 = chars.indexOf(ch2);

br2.append(txt);

int ttt2 = nh1 % tlen--;

char ch3 = txt.toCharArray()[nh2 % tlen];

int nh3 = chars.indexOf(ch3);

br3.append(txt);

int ttt3 = nh2 % tlen--;

int nhnum = nh1 + nh2 + nh3;

String mdKey = null;

try {

mdKey = MD5.MD5Encode(MD5.MD5Encode(MD5.MD5Encode(key+ch1)+ch2+ikey)+ch3).substring((int)(nhnum % 8),(int)(nhnum % 8)+(int)(knum % 8 + 16));

} catch (NoSuchAlgorithmException e) {

e.printStackTrace();

}

String tmp = "";

int j=0; int k = 0;

tlen = txt.length();

int klen = mdKey.length();

for (int i=0; i

k = k == klen ? 0 : k;

j = chars.indexOf(txt.toCharArray()[i])-nhnum - ((int)(mdKey.toCharArray()[k++]));

while (j<0)

j+=64;

}

return tmp;

}

public static void main(String正直的戒指 args) {

String a = new MD5Util().encrypt("wxw@chauvet.2016", key);

String b = new MD5Util().decrypt("HvLV0ICDQNP_fUON5pDdqcp3d48", key);

}

}

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。