欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

java易懂易用的MD5加密(可直接运行) (1)第1/2页

程序员文章站 2023-12-04 10:16:52
1、md5加密,该加密算法是单向加密,即加密的数据不能再通过解密还原。相关类包含在java.security.messagedigest包中。 2、3-des加密,该加密算...
1、md5加密,该加密算法是单向加密,即加密的数据不能再通过解密还原。相关类包含在java.security.messagedigest包中。
2、3-des加密,该加密算法是可逆的,解密方可以通过与加密方约定的密钥匙进行解密。相关类包含在javax.crypto.*包中。
3、base64编码,是用于传输8bit字节代码最常用的编码方式。相关类在sun.misc.base64decoder 和sun.misc.base64encoder 中。
4、urlencoder编码,是一种字符编码,保证被传送的参数由遵循规范的文本组成。相关类在java.net.urlencoder包中。
细节:
1、进行md5加密,得到byte[] 
复制代码 代码如下:

/**
* 进行md5加密
* @param string 原始的spkey
* @return byte[] 指定加密方式为md5后的byte[]
*/
private byte[] md5(string strsrc)
{
byte[] returnbyte = null;
try
{
messagedigest md5 = messagedigest.getinstance("md5");
returnbyte = md5.digest(strsrc.getbytes("gbk"));
}
catch(exception e)
{
e.printstacktrace();
}
return returnbyte;
}

2、得到3-des的密钥匙 
复制代码 代码如下:

/**
* 得到3-des的密钥匙
* 根据根据需要,如密钥匙为24个字节,md5加密出来的是16个字节,因此后面补8个字节的0
* @param string 原始的spkey
* @return byte[] 指定加密方式为md5后的byte[]
*/
private byte[] getenkey(string spkey)
{
byte[] deskey=null;
try
{
byte[] deskey1 = md5(spkey);
deskey = new byte[24];
int i = 0;
while (i < deskey1.length && i < 24) {
deskey[i] = deskey1[i];
i++;
}
if (i < 24) {
deskey[i] = 0;
i++;
}
}
catch(exception e){
e.printstacktrace();
}
return deskey;
}

3、3-des加密
复制代码 代码如下:

/**
* 3-des加密
* @param byte[] src 要进行3-des加密的byte[]
* @param byte[] enkey 3-des加密密钥
* @return byte[] 3-des加密后的byte[]
*/
public byte[] encrypt(byte[] src,byte[] enkey)
{
byte[] encrypteddata = null;
try
{
desedekeyspec dks = new desedekeyspec(enkey);
secretkeyfactory keyfactory = secretkeyfactory.getinstance("desede");
secretkey key = keyfactory.generatesecret(dks);
cipher cipher = cipher.getinstance("desede");
cipher.init(cipher.encrypt_mode, key);
encrypteddata = cipher.dofinal(src);
}
catch(exception e)
{
e.printstacktrace();
}
return encrypteddata;
}

4、对字符串进行base64编码
复制代码 代码如下:

/**
* 对字符串进行base64编码
* @param byte[] src 要进行编码的字符
*
* @return string 进行编码后的字符串
*/
public string getbase64encode(byte[] src)
{
string requestvalue="";
try{
base64encoder base64en = new base64encoder();
requestvalue=base64en.encode(src);
//system.out.println(requestvalue);
}
catch(exception e){
e.printstacktrace();
}

return requestvalue;
}

1