BCryptPasswordEncoder 判断密码是否相同

https://blog.csdn.net/Adonis_D_Gogh/article/details/79975526

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接: https://blog.csdn.net/Adonis_D_Gogh/article/details/79975526
         <!--一个博主专栏付费入口结束-->
        <link rel="stylesheet" href="https://csdnimg.cn/release/phoenix/template/css/ck_htmledit_views-d284373521.css">
                                    <link rel="stylesheet" href="https://csdnimg.cn/release/phoenix/template/css/ck_htmledit_views-d284373521.css">
            <div class="htmledit_views" id="content_views">
                                        <h3><a name="t0"></a><span style="color:#cc0000;">1、问题描述</span></h3><p>在使用Spring Security的过程中,涉及到<strong>登录时密码验证</strong>问题,以及<strong>更改密码时验证原密码</strong>问题。</p><h3><a name="t1"></a><span style="color:#3333ff;">2、解决办法</span></h3><p>在这两种情况下想要判断输入密码与数据库中密码(已加密)是否相同,需要使用它自带的比较方法。</p><p>源码如下</p><p></p><p><span><span style="font-family:'Microsoft YaHei';font-size:14px;color:#000000;"><strong>BCryptPasswordEncoder 类 中的matches方法</strong></span></span></p><p><img src="https://img-blog.csdn.net/2018041715314234" alt=""><br></p><h3><a name="t2"></a><span style="color:#3333ff;">3、使用方法</span></h3><p>代码如下:(点击图片可放大)</p><p><img src="https://img-blog.csdn.net/20180417153225403" alt="" width="1200" height="350"><br></p><p><span style="color:#000000;"><strong>&nbsp;matches(CharSequence rawPassword, String encodedPassword)&nbsp; &nbsp; </strong>方法中前一个参数为前端传来的值(例如123),后一个为数据库中需要对比的值(已加密存入数据库的密码)</span></p><p>——————————————分割线—— 补充 ————————————————</p><p><span style="color:rgb(0,0,0);font-family:'Microsoft YaHei';font-size:14px;"><strong>BCryptPasswordEncoder 类</strong></span><br></p><p><img src="https://img-blog.csdn.net/20180620141309898?watermark/2/text/aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L0Fkb25pc19EX0dvZ2g=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70" alt=""><br></p><p><span style="color:#ff0000;">BCRYPT_PATTERN</span>是<span style="color:#ff0000;">Pattern类</span>的一个实例</p><p><span style="color:rgb(51,51,51);font-family:'Microsoft YaHei';">Pattern类在java.util.regex包中;此包中主要有两个类:</span><span style="color:rgb(51,51,51);font-family:'Microsoft YaHei';">Pattern</span><span style="color:rgb(51,51,51);font-family:'Microsoft YaHei';">、</span><span style="color:rgb(51,51,51);font-family:'Microsoft YaHei';">Matcher</span><span style="color:rgb(51,51,51);font-family:'Microsoft YaHei';">。</span><br></p><p><span style="color:rgb(51,51,51);font-family:'Microsoft YaHei';"></span></p><p style="color:rgb(51,51,51);font-family:Verdana, Arial, Helvetica, sans-serif;font-size:14px;"><span style="font-family:'Microsoft YaHei';font-size:18px;"><span><strong>Pattern 类</strong></span></span></p><p style="color:rgb(51,51,51);font-family:Verdana, Arial, Helvetica, sans-serif;font-size:14px;"><span style="font-family:'Microsoft YaHei';font-size:16px;"><span>声明</span>:public final class&nbsp;<span>Pattern&nbsp;</span><a title="java.lang 中的类">&nbsp;</a>implements&nbsp;java.io.Serializable</span></p><p style="color:rgb(51,51,51);font-family:Verdana, Arial, Helvetica, sans-serif;font-size:14px;"><span style="font-family:'Microsoft YaHei';font-size:16px;"><span>含义</span>:模式类,正则表达式的编译表示形式。</span></p><p style="color:rgb(51,51,51);font-family:Verdana, Arial, Helvetica, sans-serif;font-size:14px;"><span style="font-family:'Microsoft YaHei';font-size:16px;"><span>注意</span>:<u>此类的实例是不可变的,可供多个并发线程安全使用。</u></span></p><p style="color:rgb(51,51,51);font-family:Verdana, Arial, Helvetica, sans-serif;font-size:14px;"><span style="font-family:'Microsoft YaHei';font-size:16px;"><strong><br></strong></span></p><p style="color:rgb(51,51,51);font-family:Verdana, Arial, Helvetica, sans-serif;font-size:14px;"><span style="font-family:'Microsoft YaHei';font-size:16px;"><strong>Matcher 类</strong></span></p><p><span style="color:rgb(51,51,51);font-family:'Microsoft YaHei';"><img src="https://img-blog.csdn.net/20180620142951137?watermark/2/text/aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L0Fkb25pc19EX0dvZ2g=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70" alt=""></span></p><p><span style="color:rgb(51,51,51);"><span style="font-family:'Microsoft YaHei';">Matcher 类中的matches方法:</span></span></p><p><span style="color:rgb(51,51,51);"><span style="font-family:'Microsoft YaHei';">boolean matches() 最常用方法:尝试对整个目标字符展开匹配检测,也就是只有整个目标字符串完全匹配时才返回真值.</span><img src="https://img-blog.csdn.net/20180620143623812?watermark/2/text/aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L0Fkb25pc19EX0dvZ2g=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70" style="color:rgb(79,79,79);font-family:'PingFang SC', 'Microsoft YaHei', SimHei, Arial, SimSun;" alt=""></span></p><h1 style="line-height:26px;font-family:'PingFang SC', 'Lantinghei SC', 'Microsoft YaHei', arial, '宋体', sans-serif, tahoma;color:rgb(51,51,51);"><a name="t3"></a><span class="ask-title" style="line-height:34px;"><span style="font-size:14px;">Pattern和Matcher具体的用法</span></span></h1><pre><code class="language-java hljs"><ol class="hljs-ln"><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="1"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line"><span class="hljs-comment">//判断是否是数字.括号里可填其他正则表达式;</span></div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="2"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line">Pattern p = Pattern.compile(<span class="hljs-string">"\\d+"</span>); </div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="3"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line"><span class="hljs-comment">//需要要判断的字符串; </span></div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="4"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line">Matcher m = p.matcher(<span class="hljs-string">"1234567"</span>); </div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="5"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line"><span class="hljs-keyword">if</span>(m.matches()) { </div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="6"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line">	System.out.println(<span class="hljs-string">"正确,是由数字组成的"</span>); </div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="7"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line">}<span class="hljs-keyword">else</span> { </div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="8"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line">	System.out.println(<span class="hljs-string">"错误,不是由数字组成的"</span>); </div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="9"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line">}</div></div></li></ol></code><div class="hljs-button {2}" data-title="复制" onclick="hljs.copyCode(event)"></div></pre><br>                                    </div>
                </div>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

hello_world!

你的鼓励将是我创作的最大动力!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值