<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
    主站蜘蛛池模板: 24小时日本在线www免费的| 精品熟女少妇a∨免费久久| 最近免费中文字幕4| 91亚洲国产成人久久精品网址| 一级做a免费视频观看网站| 亚洲av无码成人精品区| 亚洲丁香婷婷综合久久| 永久免费观看的毛片的网站| 激情五月亚洲色图| 免费的一级片网站| 亚洲av无码成人精品区一本二本 | 国产乱色精品成人免费视频| 亚洲精品又粗又大又爽A片| 国产精品高清全国免费观看| 国产午夜亚洲精品不卡电影| 亚洲综合国产精品第一页| 三年片免费高清版 | 午夜在线a亚洲v天堂网2019| 久久综合AV免费观看| 无码天堂亚洲国产AV| 中文字幕精品亚洲无线码一区| 青青草原1769久久免费播放| 亚洲精品中文字幕乱码影院| 性盈盈影院免费视频观看在线一区| 亚洲欧美在线x视频| 亚洲国产精品无码AAA片| 国内精品免费麻豆网站91麻豆| 亚洲а∨精品天堂在线| 亚洲欧洲日产国码无码网站| 午夜性色一区二区三区免费不卡视频 | 亚洲精品福利网站| 国产在线a不卡免费视频| 亚欧免费无码aⅴ在线观看| 亚洲人成网站在线在线观看| 亚洲欧洲日产国码av系列天堂| 99久久免费中文字幕精品| 成年网站免费入口在线观看 | 日韩精品亚洲aⅴ在线影院| 国产啪精品视频网免费| 男人j进入女人j内部免费网站 | 搡女人免费免费视频观看|