我试图安全地存储在数据库中的密码,并为此我select存储使用PBKDF2函数生成的散列。 我想使用弹性城堡库来做到这一点,但我不知道为什么我不能通过使用JCE接口使它工作…问题是生成3种不同的模式: 1.使用sun提供的PBKDF2WithHmacSHA1密钥工厂 2.直接使用充气城堡api 3.通过JCE使用充气城堡 结果有两个不同的值:前两个共同,第三个共同。 这是我的代码: //Mode 1 SecretKeyFactory factory = SecretKeyFactory.getInstance("PBKDF2WithHmacSHA1"); KeySpec keyspec = new PBEKeySpec("password".toCharArray(), salt, 1000, 128); Key key = factory.generateSecret(keyspec); System.out.println(key.getClass().getName()); System.out.println(Arrays.toString(key.getEncoded())); //Mode 2 PBEParametersGenerator generator = new PKCS5S2ParametersGenerator(); generator.init(PBEParametersGenerator.PKCS5PasswordToUTF8Bytes(("password").toCharArray()), salt, 1000); KeyParameter params = (KeyParameter)generator.generateDerivedParameters(128); System.out.println(Arrays.toString(params.getKey())); //Mode 3 SecretKeyFactory factorybc = SecretKeyFactory.getInstance("PBEWITHHMACSHA1", "BC"); KeySpec keyspecbc = new PBEKeySpec("password".toCharArray(), salt, […]