java 生成token代码_java token生成和校验的实例代码

本文介绍了一种Java实现的Token生成和校验方法,包括Token编码工具类和校验工具类。缺点是Token存储在内存中,适用于非分布式项目。在分布式环境下,建议将Token存储在Redis中。此外,还提供了另一种基于MD5的Token生成工具类。
摘要由CSDN通过智能技术生成

现在越来越多的登录方式都用到了token作为用户登录令牌,所以实现了一个token生成和校验案例。

缺点:该实现方式token是存储在内存中,不适合分布式项目,如需改为分布式项目部署,可把token存储在redis中,其中的实现原理还是保持不变。

一)token编码工具类

package com.oysept.token.utils;

/**

* token编码工具类

* @author ouyangjun

*/

public class TokenEncryptUtils {

// 编码密码,可自定义

private static final String ENCODED_PASSWORD = "ouyangjun";

/**

* 编码

* @param str

* @return

*/

public static String encoded(String str) {

return strToHex(encodedString(str, ENCODED_PASSWORD));

}

/**

* 转换

* @param str

* @param password

* @return

*/

private static String encodedString(String str, String password) {

char[] pwd = password.toCharArray();

int pwdLen = pwd.length;

char[] strArray = str.toCharArray();

for (int i=0; i

strArray[i] = (char)(strArray[i] ^ pwd[i%pwdLen] ^ pwdLen);

}

return new String(strArray);

}

private static String strToHex(String s) {

return bytesToHexStr(s.getBytes());

}

private static String bytesToHexStr(byte[] bytesArray) {

StringBuilder builder = new StringBuilder();

String hexStr;

for (byte bt : bytesArray) {

hexStr = Integer.toHexString(bt & 0xFF);

if (hexStr.length() == 1) {

builder.append("0");

builder.append(hexStr);

}else{

builder.append(hexStr);

}

}

return builder.toString();

}

/**

* 解码

* @param str

* @return

*/

public static String decoded(String str) {

String hexStr = null;

try {

hexStr = hexStrToStr(str);

Java中,接口(Interface)用于定义一组抽象方法,而实际的安全校验通常涉及认证、加密等操作。我们可以创建一个名为`SecurityValidator`的接口,其中包含一些基本的安全验证方法: ```java public interface SecurityValidator { // 安全登录接口 boolean authenticate(String ak, String sk); // 加密数据的方法 String encryptData(String data); // 解密数据的方法 String decryptData(String encryptedData); } ``` 然后,你可以为这个接口提供具体的实现,比如通过`JwtSecurityValidator`或`CryptographicSecurityValidator`: ```java public class JwtSecurityValidator implements SecurityValidator { @Override public boolean authenticate(String ak, String sk) { // 使用JWT(JSON Web Token)进行验证,这里只是一个示例 return validateJwt(ak, sk); // 实际验证逻辑 } @Override public String encryptData(String data) { // 使用某种算法(如AES)对数据加密,这里是简化的例子 return encrypt(data, "encryptionKey"); // 实际加密函数 } @Override public String decryptData(String encryptedData) { // 解密数据,还原原始数据 return decrypt(encryptedData, "encryptionKey"); // 实际解密函数 } } // 另外一个实现可以基于哈希或对称密钥 public class CryptographicSecurityValidator implements SecurityValidator { // 类似的方法实现... } ``` 在你的应用中,你可以根据需要选择并实例化相应的验证器: ```java SecurityValidator validator = new JwtSecurityValidator(); // 或 CryptographicSecurityValidator(); if (validator.authenticate("yourAk", "yourSk")) { String encryptedData = validator.encryptData("sensitiveData"); // 使用验证后的数据... } else { System.out.println("Authentication failed."); } ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值