CAS自定义数据加密算法

1.引言

用于CAS系统登录的密码默认提供MD5和SHA加密的算法支持,但有时由于业务需要,以上两种算法都不能提供足够的支持,这时我们就需要自定义加密算法。比如笔者遇到的一个项目,密码的加密方式,是将密码MD5加密后再拼接数据库中一个盐值,这样的需求条件就必须对加密算法进行扩展。

2.解决方案

2.1.准备一个WEB的maven项目

在这里插入图片描述

2.2.拷贝cas的源码

在这里插入图片描述

2.3.配置CAS

把之前配置好的内容移植过来
在这里插入图片描述

2.4.新建一个类,自定义加密处理
package com.bruce.encode;

import org.jasig.cas.authentication.handler.PasswordEncoder;
import sun.misc.BASE64Encoder;

import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;

/**
 * @BelongsProject: cas-server
 * @BelongsPackage: com.bruce.encode
 * @Author: bruceliu
 * @QQ:1241488705
 * @CreateTime: 2020-04-16 23:40
 * @Description: TODO
 */
public class MyPasswordEncoder implements PasswordEncoder {

    private static String salt = "bruce";

    public String encode(String password) {
        String result = "";
        String newPW = password + salt;
        System.out.println(newPW);
        try {
            //MessageDigest md = MessageDigest.getInstance("MD5");
            //BASE64Encoder base64en = new BASE64Encoder();
            //result = base64en.encode(md.digest(newPW.getBytes()));
            String pass = StringUtil.MD5Encode(newPW);
            result=pass.toLowerCase();
            System.out.println("自定义加密算法..."+result);
        } catch (Exception e) {
            e.printStackTrace();
        }
        return result;
    }
}
2.5.deployerConfigContext中配置自定义的类
<!--数据库认证 -->		  
<bean id="dbAuthHandler"  
  class="org.jasig.cas.adaptors.jdbc.QueryDatabaseAuthenticationHandler"  
  p:dataSource-ref="dataSource"  
  p:sql="select password from tb_user where username=? and status=1 and del=0"  
  p:passwordEncoder-ref="myPasswordEncoder"/>


<bean id="myPasswordEncoder" class="com.bruce.encode.MyPasswordEncoder" />
2.6 启动测试
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

熊猫-IT

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

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

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

打赏作者

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

抵扣说明:

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

余额充值