import java.security.MessageDigest;
import java.util.Random;
import sun.misc.BASE64Encoder;
// 令牌产生器
public class TokenProccessor {
// 单例
private TokenProccessor(){}
private static TokenProccessor instance = new TokenProccessor();
public static TokenProccessor newInstance() {
return instance;
}
// 产生令牌
public String makeToken() {
try {
// 1. 产生一个随机数
String token = new Random().nextInt(19999999) + ""
+ System.currentTimeMillis();
// 2. 长度大小不一致
// 指纹算法 消息摘要 md5 MessageDigest
MessageDigest messageDigest = MessageDigest.getInstance("md5");
byte[] md5 = messageDigest.digest(token.getBytes());
// 将 任意的字节数组 转为可见的字符 转为明文
// base64 算法
BASE64Encoder encoder = new BASE64Encoder();
String result = encoder.encode(md5);
return result;
} catch (Exception e) {
throw new TokenException(e);
}
}
}
package cn.easyknow.elec.test;
import java.security.MessageDigest;
import java.util.Random;
import sun.misc.BASE64Encoder;
// 令牌产生器
public class md5Digest {
// 产生令牌
public static String makeToken(String password) {
try {
MessageDigest messageDigest = MessageDigest.getInstance("md5");
byte[] md5 = messageDigest.digest(password.getBytes());
// 将 任意的字节数组 转为可见的字符 转为明文
// base64 算法
BASE64Encoder encoder = new BASE64Encoder();
String result = encoder.encode(md5);
return result;
} catch (Exception e) {
throw new RuntimeException(e);
}
}
public static void main(String[] args) {
String token = makeToken("123411111");
System.out.println(token);
}
}
分享到:
相关推荐
头部和载荷都是JSON对象,通过Base64编码,而签名则是对前两部分和一个密钥进行哈希运算的结果,用于验证信息未被篡改。 - **JWT生成**:服务器在用户成功登录后生成JWT,其中载荷可以包含用户ID、过期时间等信息...
在encrypt方法中,通过使用MD5算法生成随机密钥,并将传入的文本与密钥进行异或操作,接着对结果进行base64编码,并替换加号为下划线以防止在URL中被错误解析。 GToken类用于生成和处理令牌。它使用GEncrypt类来...
6. **文件校验**:为了确保文件的完整性,项目可能采用了如MD5或SHA家族的哈希算法对文件进行校验。每个文件分片上传后,其哈希值会被计算并与服务器端记录进行比较,确保数据的一致性。 7. **前端上传组件**:项目...
MD5,SHA-128,SHA-256 数据完整性的校验, 秒传,先发散列值,判断服务器是否存在 散列值无法变成原始数据(不可逆) 密码在数据库的存储,散列函数+盐 不能找回密码,只能重置 加密算法 对称密钥(一个密钥...
JWT由头部(Header)、载荷(Payload)和签名(Signature)三部分组成,且通常以Base64编码的形式存储,易于在网络中传输。OAuth Token则主要用于授权,允许第三方应用代表用户访问特定资源。 `Timestamp`,时间戳...
2. 使用MD5算法对`'帐号+密码'`进行加密,生成一个32位的加密字符串B。 3. 最终加密后的密码格式为:B的前16位+A+B的后16位。 **状态码表**: | 状态码 | 描述 | |--------|---------------------------------------...
使用 `md5(‘帐号+密码’)` 生成一个 32 位的加密字符串 B; 3. 最终加密后的密码格式为:B 的前 16 位 + A + B 的后 16 位。 - **返回值**: - **返回类型**: JSON - **结果示例**: - 错误情况:`{"code":10000...
base64_decode($string) : substr(md5($string . $key), 0, 8) . $string; $string_length = strlen($string); $rndkey = $box = array(); $result = ''; for ($i = 0; $i ; $i++) { $rndkey[$i] = ord($key...
sign = hashlib.md5((sorted_params + secret_key).encode()).hexdigest() return sign # 示例使用 text_to_translate = "你好,世界" translated_text = translate_text(text_to_translate, 'zh', 'en') print...
首先,函数通过`md5()`计算当前微时间和服务器文档根目录的MD5值,然后使用`base_convert()`函数将其从16进制转换为十进制(如果`$numeric`为真)或35进制(如果`$numeric`为假)。这一步是为了确保种子字符串的复杂...
1. **哈希算法**:使用哈希函数(如MD5或SHA)将长URL转化为固定长度的哈希值,但哈希碰撞问题需要解决。 2. **Base64编码**:将哈希值进行Base64编码,使得结果更易读,但长度可能会比原始哈希值稍长。 3. **自增ID...
5. **README.md** - 项目说明文件,通常包含项目简介、如何运行、贡献指南等内容。 6. **github_api.py** 或类似的文件 - 这可能包含了实际调用GitHub API的Python代码。 7. **tests** 目录 - 测试代码存放的地方,...
2.9.6 7x00 10BaseT以太网 46 2.9.7 7x00 10BaseFL以太网 46 2.9.8 7x00快速以太网 47 2.9.9 7x00同步串行 47 2.9.10 7x00单端口Molex 200针插座 48 2.9.11 7x00同步串行E1-G.703/G.704 48 2.9.12 7x00令牌环 48 2.9...