</span><span style="color: #008000;">//</span><span style="color: #008000;"> Check that an unencrypted password matches one that has </span><span style="color: #008000;">//</span><span style="color: #008000;"> previously been hashed</span> String candidate = "testpassword"<span style="color: #000000;">; </span><span style="color: #008000;">//</span><span style="color: #008000;">String candidate = "wrongtestpassword";</span> <span style="color: #0000ff;">if</span><span style="color: #000000;"> (BCrypt.checkpw(candidate, hashed)) System.out.println(</span>"It matches"<span style="color: #000000;">); </span><span style="color: #0000ff;">else</span><span style="color: #000000;"> System.out.println(</span>"It does not match"<span style="color: #000000;">); } }</span></pre>
<div class="cnblogs\_code\_toolbar"><span class="cnblogs\_code\_copy"><a href="javascript:void(0);" onclick="copyCnblogsCode(this)" title="复制代码"><img src="https://my.oschina.net//common.cnblogs.com/images/copycode.gif" alt="复制代码"></a></span></div></div> <p> </p> </div> <div>在这个例子中,</div> </div> <div> <div> <pre name="code" class="prettyprint linenums prettyprinted"></pre> <div class="linenums"> <div class="L0"><code class="language-java"><span class="typ">BCrypt<span class="pun">.<span class="pln">hashpw<span class="pun">(<span class="pln">password<span class="pun">,<span class="pln"> <span class="typ">BCrypt<span class="pun">.<span class="pln">gensalt<span class="pun">())</span></span></span></span></span></span></span></span></span></span></span></code></div> </div> </div> <div>是核心。通过调用BCrypt类的静态方法hashpw对password进行加密。第二个参数就是我们平时所说的加盐。</div> </div> <div> <div> <pre name="code" class="prettyprint linenums prettyprinted"></pre> <div class="linenums"> <div class="L0"><code class="language-java"><span class="typ">BCrypt<span class="pun">.<span class="pln">checkpw<span class="pun">(<span class="pln">candidate<span class="pun">,<span class="pln"> hashed)</span></span></span></span></span></span></span></code></div> </div> </div> <div>该方法就是对用户后来输入的密码进行比较。如果能够匹配,返回true。</div> </div> </div> <div> </div> <div> <div>三、加盐</div> </div> <div> <div>如果两个人或多个人的密码相同,加密后保存会得到相同的结果。破一个就可以破一片的密码。如果名为A的用户可以查看数据库,那么他可以观察到自己的密码和别人的密码加密后的结果都是一样,那么,别人用的和自己就是同一个密码,这样,就可以利用别人的身份登录了。</div> <div>其实只要稍微混淆一下就能防范住了,这在加密术语中称为“加盐”。具体来说就是在原有材料(用户自定义密码)中加入其它成分(一般是用户自有且不变的因素),以此来增加系统复杂度。当这种盐和用户密码相结合后,再通过摘要处理,就能得到隐蔽性更强的摘要值。</div> </div> 原文地址:https://www.cnblogs.com/xingzc/p/8624007.html</div>Java通过BCrypt加密
Wesley13
2021-10-11
1734 0 0
点赞
收藏
评论区
加载中...