<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    瘋狂

    STANDING ON THE SHOULDERS OF GIANTS
    posts - 481, comments - 486, trackbacks - 0, articles - 1
      BlogJava :: 首頁 :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理

    md5加鹽驗證用戶密碼的小例子

    Posted on 2010-02-09 13:13 瘋狂 閱讀(2571) 評論(1)  編輯  收藏 所屬分類: java安全

    package com.test;

    import java.io.ByteArrayOutputStream;
    import java.io.File;
    import java.io.FileInputStream;
    import java.io.FileOutputStream;
    import java.nio.ByteBuffer;
    import java.nio.channels.FileChannel;
    import java.security.MessageDigest;
    import java.security.SecureRandom;
    import java.util.Arrays;

    //使用md5和鹽驗證安全登陸
    public class Test_MD5 {

     private static final String PWD_FILE = "c:\\pwd.txt";
     /**
      * @param args
      */
     public static void main(String[] args) throws Exception{
      
           
      //用戶創(chuàng)建密碼,服務(wù)端雜湊并保存
      saveMessagePwdInFile("admin");
      ////驗證用戶輸入
      checkUserPwd("admin1");
        
      
     }
     public static void saveMessagePwdInFile(String inputPwd)throws Exception{
      byte[] salt = new byte[8];
      SecureRandom random = new SecureRandom();
      random.nextBytes(salt);
      System.out.println("生成的鹽:"+Arrays.toString(salt));
      
      MessageDigest digest = MessageDigest.getInstance("MD5");//當然可以使用SHA(160位),MD5(128位)
      digest.update(salt);
      digest.update(inputPwd.getBytes("utf-8"));
      byte[] afterMd5 = digest.digest();
      System.out.println("雜湊值:"+Arrays.toString(afterMd5));
      
      //鹽和雜湊值寫入文件
      FileOutputStream outputStream = new FileOutputStream(new File(PWD_FILE));
      FileChannel channel = outputStream.getChannel();
      channel.write(ByteBuffer.wrap(salt));
      channel.write(ByteBuffer.wrap(afterMd5));
      outputStream.flush();
      outputStream.close();
      System.out.println("保存信息完畢...");
      
     }
     public static void checkUserPwd(String pwd)throws Exception{
      ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();
      FileInputStream fileInputStream = new FileInputStream(new File(PWD_FILE));
      FileChannel channel2 = fileInputStream.getChannel();
      ByteBuffer dst = ByteBuffer.allocate(1024);
      int l = -1;
      while((l=channel2.read(dst))!=-1){
       dst.flip();
       byteArrayOutputStream.write(dst.array(),0,l);
       dst.compact();
       dst.clear();
      }
      fileInputStream.close();
      byte[] pwdbyte = byteArrayOutputStream.toByteArray();
      byteArrayOutputStream.reset();
      
      byte[] salt2 = new byte[8];
      System.arraycopy(pwdbyte, 0, salt2, 0, 8);
      System.out.println("從文件獲取鹽:"+Arrays.toString(salt2));
      byte[] pwdinfile = new byte[pwdbyte.length-8];
      System.arraycopy(pwdbyte, 8, pwdinfile, 0, pwdbyte.length-8);
      System.out.println("從文件獲取雜湊值:"+Arrays.toString(pwdinfile));
         byte[] toyz = getUserMd5Pwd(salt2,pwd);
         System.out.println(Arrays.equals(toyz, pwdinfile)==true?"登陸成功":"密碼有誤,登錄失敗...");
     }
     
       public static byte[] getUserMd5Pwd(byte[] salt,String pwd) throws Exception{
        MessageDigest digest2 = MessageDigest.getInstance("MD5");
      digest2.update(salt);
         digest2.update(pwd.getBytes("utf-8"));
         byte[] toyz = digest2.digest();
        
         System.out.println("用戶輸入雜湊值:"+Arrays.toString(toyz));
         return toyz;
       }
    }


    評論

    # re: md5加鹽驗證用戶密碼的小例子  回復(fù)  更多評論   

    2013-06-10 15:30 by trt
    dfghrthtrhrhytrg
    主站蜘蛛池模板: 一级毛片aaaaaa视频免费看| 亚洲福利视频网址| 亚洲精品第一国产综合境外资源| 午夜精品在线免费观看| 成年人视频在线观看免费 | 久久亚洲AV无码精品色午夜麻豆| 亚洲AV人无码激艳猛片| 亚洲AV无码乱码国产麻豆| 亚洲AV无码一区二区二三区入口 | 免费看a级黄色片| 日韩电影免费在线| 免费一级大黄特色大片| 亚洲av无码成人精品区| 亚洲人成色77777在线观看大| 亚洲另类激情专区小说图片| 精品亚洲一区二区三区在线观看 | 亚洲精品和日本精品| 亚洲无码黄色网址| 国产亚洲综合成人91精品| 精品日韩亚洲AV无码一区二区三区| 亚洲黄色网址大全| 精品亚洲成A人无码成A在线观看| 亚洲爆乳无码专区www| 牛牛在线精品观看免费正 | 亚洲自国产拍揄拍| 鲁啊鲁在线视频免费播放| 高清永久免费观看| 最新黄色免费网站| 日韩高清在线免费看| 久久久久亚洲精品中文字幕| 久久精品国产精品亚洲蜜月| 亚洲va精品中文字幕| 美女羞羞视频免费网站| 99久久免费国产精精品| 免费观看的毛片大全| 免费一级做a爰片久久毛片潮喷| 浮力影院亚洲国产第一页| 亚洲国产高清视频| 亚洲日本一线产区和二线产区对比| 免费人成视频在线观看免费| 日本在线免费播放|