kotlin和java生成校验和密码加密

 在使用之前先引入依赖(最新的版本可以到 4.4.0)

Gradle

implementation("com.auth0:java-jwt:4.0.0")

Maven

<!-- https://mvnrepository.com/artifact/com.auth0/java-jwt -->
<dependency>
    <groupId>com.auth0</groupId>
    <artifactId>java-jwt</artifactId>
    <version>4.0.0</version>
</dependency>

 application.yml

加密算法:自己设置一个复杂的格式
过期时间:设置一个过期时间

jwt:
# 加密算法
  secret: csdnaa192837192873^^&^&^&^&^jalskdjflaksdjfalskdsadf
# 过期时间毫秒 7天
  expire: 604800000

kotlin 

// 加密
@Value("\${jwt.secret}")
private val SECRET: String? = null

// 过期时间
@Value("\${jwt.expire}")
private val EXPIRE_TIME: Long = 0

1.生成token

登录接口传zhangHao、miMa,保存一个Map

/**
 * 生成token
 *
 * @param map
 * @return
 */
fun createToken(map: Map<String, String>): String {
    return JWT.create()
        .withClaim("zhangHao", map["zhangHao"])
        .withClaim("miMa", map["miMa"])
        .withExpiresAt(Date(System.currentTimeMillis() + EXPIRE_TIME))
        .sign(Algorithm.HMAC256(SECRET))
}

java简化

public static String createToken(Admin admin){
    String token = JWT.create()
       .withClaim("password",admin.getPassword() )
       .withClaim("username", admin.getUsername())
       .withClaim("id",admin.getId() )
       .withExpiresAt(new Date(System.currentTimeMillis()+604800000))
       .sign(Algorithm.HMAC256("sfasagsg"));
}

2. 验证token

传入token ,验证token成功后解析返回map

/**
 * 验证token
 *
 * @param token
 * @return
 */
fun verifyToken(token: String): Map<String, Claim>? {
    val verifier: JWTVerifier = JWT.require(Algorithm.HMAC256(SECRET)).build()
    try {
        val jwt: DecodedJWT = verifier.verify(token)
        return jwt.claims
    } catch (e: Exception) {
        log.info("token验证失败:{}", e.message)
    }
    return null
}

java简化 

public static Admin verifyToken(String token){
    JWTVerifier jwt = JWT.require(Algorithm.HMAC256("sfasagsg")).build();
    DecodedJWT map = jwt.verify(token);
    Admin result = new Admin();
    result.setId(map.getClaim("id").asInt());
    result.setPassword(map.getClaim("password").asString());
    result.setUsername(map.getClaim("username").asString());
    return result;
}

3.密码加密

密码加密:Base64 ——》MD5 加密

kotlin

// 密码加密 转Base64后在md5加密 不可逆
fun String.toPassword(): String {
//            Base64
    val base64 = Base64.getEncoder().encodeToString(this.toByteArray())
    val md5 = base64.hashCode().toString() + base64
    return md5
}

java

public static String toPassword(String password){
    String s = DigestUtils.md5DigestAsHex((password).getBytes());
    return s.hashCode()+"asfbsef";
}

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值