生成安全的密码,生成随机的16位salt并经过1024次 sha-1 hash

解决方案 »

  1.   

    java 的加密是这种的 不过我要php的
     /**
      * 生成密文密码,生成随机的16位salt并经过1024次 sha-1 hash
      * @param plainPassword
      *  明文密码
      * @return 16位salt密钥 + 40位hash密码
      * @Date 2015-7-1
      */
     public String encryptPassword(String plainPassword) {
          byte[] salt = Digests.generateSalt(SALT_SIZE);//SALT_SIZE为 8
          //对输入字符串进行sha1散列 经过1024次 sha-1 hash.HASH_INTERATIONS为 1024
          byte[] hashPassword = Digests.sha1(plainPassword.getBytes(), salt, HASH_INTERATIONS);
          //对salt进行hex编码生成string字符串,作为密码前半部分,对加盐、sha1加密后的密码hex编码生成后半部分密码
          //这样即使是2个同样的明文密码,加密后的密文也是不同的,即使有密码碰撞库也无法找到 
           //获得16位salt密钥 + 40位hash密码
          return Encodes.encodeHex(salt) + Encodes.encodeHex(hashPassword);
     }
     
    /**
      * 生成随机的Byte[]作为salt.
      * @param numBytes
      *  byte数组的大小
      */
     public static byte[] generateSalt(int numBytes) {
          Validate.isTrue(numBytes > 0,
            "numBytes argument must be a positive integer (1 or larger)",  numBytes); 
          byte[] bytes = new byte[numBytes];
          random.nextBytes(bytes);
          return bytes;
     }
      

  2.   

    PHP sha1 加密 sha1(要加密的数据)就好了类似于MD5加密
      

  3.   

    其实你要的是,相同的内容,加密之后的结果不一样。可以了解下password_hash
    http://www.php.net/manual/zh/function.password-hash.php
      

  4.   

    经过1024次 sha-1 hash.HASH_INTERATIONS为 1024  php 对这个条件怎么解决
      

  5.   

    字面意义就是循环 1024 次做 sha
    不过 sha 值是不可逆的,似乎并无浪费时间的必要
      

  6.   


    但是要和java 那边统一啊   天啊  。。难道真要做1024次sha1 嘛??头痛
      

  7.   

    那你就去看 Java 的说明
      

  8.   

    生成安全的密码,生成随机的16位salt并经过1024次 sha-1 hash 
    java 给的说明就是这个啊  还有上边的那一串 java的加密代码  求大佬解答啊
      

  9.   

    难道真要for(i=0 i<1000;i++){
    sha1(字符串)
    }
    吗   感觉有点坑啊
      

  10.   

    $s = sha1(字符串);
    for(i=0 i<1000;i++){
      $s = sha1($s);  
    }
      

  11.   

    你发的Java代码貌似不完整