java有password_hash吗,java 实现 PHP password_hash() password_verify() 单向验证
近期一個 php 轉 java 項目中遇到。寫出來分享一下:
java BCrypt 類庫。
https://github.com/patrickfav/bcrypt
@Test
public void testBCrypt() {
String password = "abcd";
String bcryptHashString = BCrypt.withDefaults().hashToString(12, password.toCharArray());
System.out.println(bcryptHashString);
// $2a$12$US00g/uMhoSBm.HiuieBjeMtoN69SN.GE25fCpldebzkryUyopws6
BCrypt.Result result = BCrypt.verifyer().verify(password.toCharArray(), bcryptHashString);
assert result.verified;
// String hash = BCrypt.with(customVersion2f).hashToString(10, password.toCharArray());
// String hash = BCrypt.with(BCrypt.Version.VERSION_2X).hashToString(10, password.toCharArray());
String hash = BCrypt.with(BCrypt.Version.VERSION_2Y).hashToString(10, password.toCharArray());
System.out.println(hash);
//from php
// hash = "$2y$10$SUr/RXt7IwSALE8x3W25huJDGDKWjBEisXIdS/As7CIqwLMgaUOE.";
// hash = "$2y$10$L.D2Q/d.7f0/vtJv7KzwXesxjlnAOkjmg/HjS4FXdWLJBE.tBZDSq";
hash = "$2y$10$gNNdf9tIKD3Sa.XOL/7zreGL9YQwk.d1iFYcOjMy3ab6EFKQ6P2yq";
//from php 'abCd'
// hash = "$2y$10$3i/2nXwBYFW353MhCDQJYusVhwlwZHiYKTSA9nm6GB6aiISsYzuXa";
BCrypt.Result res = BCrypt.verifyer().verify(password.toCharArray(), hash);
assert res.verified;
}
php hash 到 java 沒有問題
java hash 到 php 需要重新定義一些函數,文檔中提到:
For example the PHP implementation of bcrypt will return hashes with version $2y$. By using BCrypt.withDefaults() it will default to version $2a$. The older $2$ version is not supported. For advanced use cases you may add your own version by providing a version identifier and a custom message formatter as well as parser.
Version customVersion2f = new Version(new byte[]{0x32, 0x66} /* 2f */,true ,true, myCustomFormatter, myCustomParser);
總結
以上是生活随笔為你收集整理的java有password_hash吗,java 实现 PHP password_hash() password_verify() 单向验证的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 世界上第一部智能手机是什么(动荡的世界蕴
- 下一篇: 锁定小金库提升白条额度是什么意思