网站建设资讯

NEWS

网站建设资讯

java用户注册加密代码,java用户名密码如何加密

java web开发用户注册时密码加密一般用什么技术?

MD5加密,这是一种不可逆的加密算法,即一旦进行MD5加密算法,不能再得到原始的密码\x0d\x0a \x0d\x0a开发者可以将用户输入的密码进行MD5加密后,再与数据库中存储的加密后的密码比较,即可知道密码的准确性。\x0d\x0a \x0d\x0a若想找回密码,一种即可以重置密码,即有一个默认的密码。重置后,可以自己再修改密码;另一种即可以通过其他方面的验证后,来录入一个新密码。现在很多都是使用邮箱验证或是手机随机验证,验证成功后,可以设置新密码

创新互联专注为客户提供全方位的互联网综合服务,包含不限于网站制作、成都网站设计、凤县网络推广、微信小程序开发、凤县网络营销、凤县企业策划、凤县品牌公关、搜索引擎seo、人物专访、企业宣传片、企业代运营等,从售前售中售后,我们都将竭诚为您服务,您的肯定,是我们最大的嘉奖;创新互联为所有大学生创业者提供凤县建站搭建服务,24小时服务热线:13518219792,官方网址:www.cdcxhl.com

java 加密的示例

import java.security.*;

import javax.crypto.*;

import java.io.*;

public class tCipher

{

public static void main(String[] args)

{

test_Cipher();

}

public static void test_Cipher()

{

try

{

//待加密的数据

String strToEnc = "Hello Java!";

byte[] plainText = strToEnc.getBytes();

System.out.println( "\n开始生成DES密钥" );

KeyGenerator keyGen = KeyGenerator.getInstance("DES"); //初始化为DES算法

keyGen.init(56); //设置其密钥长度,56bits

Key key = keyGen.generateKey(); //生成密钥

System.out.println( "生成DES密钥成功。" );

//打印出DES密钥

byte[] keyencode=key.getEncoded();

PrintHex(keyencode,keyencode.length);

//生成Cipher对象,设置算法为ECB模式的DES算法,补位填充模式为PKCS5

Cipher cipher = Cipher.getInstance("DES/ECB/PKCS5Padding");

//打印Cipher对象密码服务提供者信息

System.out.println( "\n" + cipher.getProvider().getInfo() );

// 加密

System.out.println( "\n开始加密" );

cipher.init(Cipher.ENCRYPT_MODE, key);//cipher对象初始化,设置为加密

byte[] cipherText = cipher.doFinal(plainText);//结束数据加密,输出密文

System.out.println( "加密完成,密文为: " );

PrintHex(cipherText,cipherText.length);//打印密文

// 使用相同的key解密数据

System.out.println( "\n开始解密" );

cipher.init(Cipher.DECRYPT_MODE, key);

byte[] newPlainText = cipher.doFinal(cipherText);

System.out.println( "解密完成 ,明文为:" );

//输出原文

System.out.println( new String(newPlainText, "UTF8") );

}

catch (Exception e)

{

System.out.println("加解密出错。");

}

}

public static void PrintHex(byte data[],int len)

{

int i;

int tmp;

String Tmp="";

for(i=0; ilen; i++)

{

if(i%16 == 0)

{

System.out.println("");

//0x0000

if(i0x10)

Tmp = "0x000";

if((i0x100) (i=0x10))

Tmp = "0x00";

if((i=0x100)(i0x1000))

Tmp = "0x0";

if(i=0x1000)

Tmp = "0x";

System.out.print(Tmp+Integer.toHexString(i)+"h: ");

}

tmp = data[i];

if(tmp 0)

tmp = 256 + tmp;

if(tmp 0x10)

System.out.print("0"+Integer.toHexString(tmp) +" ");

else

System.out.print(Integer.toHexString(tmp) +" ");

}

System.out.println("");

}

}

java加密解密代码

package com.cube.limail.util;

import javax.crypto.Cipher;

import javax.crypto.KeyGenerator;

import javax.crypto.SecretKey;/**

* 加密解密类

*/

public class Eryptogram

{

private static String Algorithm ="DES";

private String key="CB7A92E3D3491964";

//定义 加密算法,可用 DES,DESede,Blowfish

static boolean debug = false ;

/**

* 构造子注解.

*/

public Eryptogram ()

{

} /**

* 生成密钥

* @return byte[] 返回生成的密钥

* @throws exception 扔出异常.

*/

public static byte [] getSecretKey () throws Exception

{

KeyGenerator keygen = KeyGenerator.getInstance (Algorithm );

SecretKey deskey = keygen.generateKey ();

System.out.println ("生成密钥:"+bytesToHexString (deskey.getEncoded ()));

if (debug ) System.out.println ("生成密钥:"+bytesToHexString (deskey.getEncoded ()));

return deskey.getEncoded ();

} /**

* 将指定的数据根据提供的密钥进行加密

* @param input 需要加密的数据

* @param key 密钥

* @return byte[] 加密后的数据

* @throws Exception

*/

public static byte [] encryptData (byte [] input ,byte [] key ) throws Exception

{

SecretKey deskey = new javax.crypto.spec.SecretKeySpec (key ,Algorithm );

if (debug )

{

System.out.println ("加密前的二进串:"+byte2hex (input ));

System.out.println ("加密前的字符串:"+new String (input ));

} Cipher c1 = Cipher.getInstance (Algorithm );

c1.init (Cipher.ENCRYPT_MODE ,deskey );

byte [] cipherByte =c1.doFinal (input );

if (debug ) System.out.println ("加密后的二进串:"+byte2hex (cipherByte ));

return cipherByte ;

} /**

* 将给定的已加密的数据通过指定的密钥进行解密

* @param input 待解密的数据

* @param key 密钥

* @return byte[] 解密后的数据

* @throws Exception

*/

public static byte [] decryptData (byte [] input ,byte [] key ) throws Exception

{

SecretKey deskey = new javax.crypto.spec.SecretKeySpec (key ,Algorithm );

if (debug ) System.out.println ("解密前的信息:"+byte2hex (input ));

Cipher c1 = Cipher.getInstance (Algorithm );

c1.init (Cipher.DECRYPT_MODE ,deskey );

byte [] clearByte =c1.doFinal (input );

if (debug )

{

System.out.println ("解密后的二进串:"+byte2hex (clearByte ));

System.out.println ("解密后的字符串:"+(new String (clearByte )));

} return clearByte ;

} /**

* 字节码转换成16进制字符串

* @param byte[] b 输入要转换的字节码

* @return String 返回转换后的16进制字符串

*/

public static String byte2hex (byte [] b )

{

String hs ="";

String stmp ="";

for (int n =0 ;n b.length ;n ++)

{

stmp =(java.lang.Integer.toHexString (b [n ] 0XFF ));

if (stmp.length ()==1 ) hs =hs +"0"+stmp ;

else hs =hs +stmp ;

if (n b.length -1 ) hs =hs +":";

} return hs.toUpperCase ();

}

/**

* 字符串转成字节数组.

* @param hex 要转化的字符串.

* @return byte[] 返回转化后的字符串.

*/

public static byte[] hexStringToByte(String hex) {

int len = (hex.length() / 2);

byte[] result = new byte[len];

char[] achar = hex.toCharArray();

for (int i = 0; i len; i++) {

int pos = i * 2;

result[i] = (byte) (toByte(achar[pos]) 4 | toByte(achar[pos + 1]));

}

return result;

}

private static byte toByte(char c) {

byte b = (byte) "0123456789ABCDEF".indexOf(c);

return b;

}

/**

* 字节数组转成字符串.

* @param String 要转化的字符串.

* @return 返回转化后的字节数组.

*/

public static final String bytesToHexString(byte[] bArray) {

StringBuffer sb = new StringBuffer(bArray.length);

String sTemp;

for (int i = 0; i bArray.length; i++) {

sTemp = Integer.toHexString(0xFF bArray[i]);

if (sTemp.length() 2)

sb.append(0);

sb.append(sTemp.toUpperCase());

}

return sb.toString();

}

/**

* 从数据库中获取密钥.

* @param deptid 企业id.

* @return 要返回的字节数组.

* @throws Exception 可能抛出的异常.

*/

public static byte[] getSecretKey(long deptid) throws Exception {

byte[] key=null;

String value=null;

//CommDao dao=new CommDao();

// List list=dao.getRecordList("from Key k where k.deptid="+deptid);

//if(list.size()0){

//value=((com.csc.sale.bean.Key)list.get(0)).getKey();

value = "CB7A92E3D3491964";

key=hexStringToByte(value);

//}

if (debug)

System.out.println("密钥:" + value);

return key;

}

public String encryptData2(String data) {

String en = null;

try {

byte[] key=hexStringToByte(this.key);

en = bytesToHexString(encryptData(data.getBytes(),key));

} catch (Exception e) {

e.printStackTrace();

}

return en;

}

public String decryptData2(String data) {

String de = null;

try {

byte[] key=hexStringToByte(this.key);

de = new String(decryptData(hexStringToByte(data),key));

} catch (Exception e) {

e.printStackTrace();

}

return de;

}

} 加密使用: byte[] key=Eryptogram.getSecretKey(deptid); //获得钥匙(字节数组)

byte[] tmp=Eryptogram.encryptData(password.getBytes(), key); //传入密码和钥匙,获得加密后的字节数组的密码

password=Eryptogram.bytesToHexString(tmp); //将字节数组转化为字符串,获得加密后的字符串密码解密与之差不多


网站名称:java用户注册加密代码,java用户名密码如何加密
本文链接:http://cdweb.net/article/dssgees.html