【JavaWeb】用户信息加密

用户登录时需要对密码等重要信息进行加密处理。可以在后台或者前后台同时加密进行加密,主要是在后台进行加密,然后将生成的密文存储到数据库,下次登录时再用同样的加密算法生成的密文和数据库的进行比对。
另外在使用HTTPS的情况下比HTTP协议的安全性更好。


加密流程:
1. 用户提交用户信息,例如密码;
2. 服务器收到明文后进行加密(常用的有MD5、SHA等),生成密文;
3. 服务器将生成的密文存入数据库。
验证流程:
1. 用户提交用户信息;
2. 服务器根据明文生成密文;
3. 将生成的密文与数据库中的密文进行比对。

1. MessageDigest方法摘要

方法摘要
 Objectclone() 
          如果实现是可复制的,则返回一个副本。
 byte[]digest() 
          通过执行诸如填充之类的最终操作完成哈希计算。
 byte[]digest(byte[] input) 
          使用指定的字节数组对摘要进行最后更新,然后完成摘要计算。
 intdigest(byte[] buf, int offset, int len) 
          通过执行诸如填充之类的最终操作完成哈希计算。
 StringgetAlgorithm() 
          返回标识算法的独立于实现细节的字符串。
 intgetDigestLength() 
          返回以字节为单位的摘要长度,如果提供程序不支持此操作并且实现是不可复制的,则返回 0。
static MessageDigestgetInstance(String algorithm) 
          生成实现指定摘要算法的 MessageDigest 对象。
static MessageDigestgetInstance(String algorithm, Provider provider) 
          生成实现指定提供程序提供的指定算法的 MessageDigest 对象,如果该算法可从指定的提供程序得到的话。
static MessageDigestgetInstance(String algorithm, String provider) 
          生成实现指定提供程序提供的指定算法的 MessageDigest 对象,如果该算法可从指定的提供程序得到的话。
 ProvidergetProvider() 
          返回此信息摘要对象的提供程序。
static booleanisEqual(byte[] digesta, byte[] digestb) 
          比较两个摘要的相等性。
 voidreset() 
          重置摘要以供再次使用。
 StringtoString() 
          返回此信息摘要对象的字符串表示形式。
 voidupdate(byte input) 
          使用指定的字节更新摘要。
 voidupdate(byte[] input) 
          使用指定的字节数组更新摘要。
 voidupdate(byte[] input, int offset, int len) 
          使用指定的字节数组,从指定的偏移量开始更新摘要。
 voidupdate(ByteBuffer input) 
          使用指定的 ByteBuffer 更新摘要。

2. MD5 加密

public class Main {

    public static void main(String[] args) throws NoSuchAlgorithmException {
             String pw = "11112";
             MessageDigest md = MessageDigest.getInstance("MD5");
             md.update(pw.getBytes());

             byte[] b = md.digest();
             System.out.println(byte2hex(b));
        }
        public static String byte2hex(byte[] b) //二行制转字符串
        {
         String hs="";
         String stmp="";
         for (int n=0;n<b.length;n++)
          {
           stmp=(Integer.toHexString(b[n] & 0XFF));
           if (stmp.length()==1) hs=hs+"0"+stmp;
           else hs=hs+stmp;
          }
         return hs.toUpperCase();
        }

    }
    //结果:25F9E794323B453885F5181F1B624D0B

SHA-1加密

    public static void main(String[] args) throws NoSuchAlgorithmException {
         String pw = "123456789";
         MessageDigest md = MessageDigest.getInstance("SHA-1");
         md.update(pw.getBytes());

         byte[] b = md.digest();
         System.out.println(byte2hex(b));
    }
    public static String byte2hex(byte[] b) //二行制转字符串
    {
     String hs="";
     String stmp="";
     for (int n=0;n<b.length;n++)
      {
       stmp=(Integer.toHexString(b[n] & 0XFF));
       if (stmp.length()==1) hs=hs+"0"+stmp;
       else hs=hs+stmp;
      }
     return hs.toUpperCase();
    }

    }
    //结果:F7C3BC1D808E04732ADF679965CCC34CA7AE3441
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

勇敢牛牛_

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值