<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 :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理

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

    Posted on 2010-02-09 13:13 瘋狂 閱讀(2570) 評論(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{
      
           
      //用戶創建密碼,服務端雜湊并保存
      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加鹽驗證用戶密碼的小例子  回復  更多評論   

    2013-06-10 15:30 by trt
    dfghrthtrhrhytrg
    主站蜘蛛池模板: 精品免费久久久久久成人影院| 热99RE久久精品这里都是精品免费| 亚洲一区二区女搞男| 亚洲爆乳精品无码一区二区| 在线免费一区二区| 亚洲成a人片在线不卡一二三区| 大学生一级毛片免费看| 亚洲成a人一区二区三区| 亚洲精品永久www忘忧草| 久久A级毛片免费观看| 亚洲精品国产福利一二区| 日本高清不卡中文字幕免费| 18国产精品白浆在线观看免费| 亚洲国产精品不卡毛片a在线| 深夜a级毛片免费无码| 国产成人亚洲精品91专区手机| 久久久久久久久久久免费精品| 日韩成全视频观看免费观看高清| 亚洲综合激情九月婷婷| 久久精品无码一区二区三区免费| 九月丁香婷婷亚洲综合色| 国产亚洲男人的天堂在线观看 | 亚洲精品无码专区在线在线播放 | 毛片无码免费无码播放| 亚洲午夜在线一区| 国产精品二区三区免费播放心| 日韩精品免费一线在线观看| 久久国产精品亚洲一区二区| 18禁黄网站禁片免费观看不卡| 亚洲色欲色欲www在线播放| 免费看h片的网站| 亚洲电影国产一区| 免费av欧美国产在钱| 十八禁的黄污污免费网站| 亚洲精品线在线观看| a毛片久久免费观看| 亚洲最大的视频网站| 免费A级毛片无码A| 最近中文字幕免费完整| 亚洲国产成人无码AV在线| 亚洲国产另类久久久精品|