You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
reader/app/src/main/java/com/novel/read/utils/CheckSumBuilder.java

94 lines
2.8 KiB

package com.novel.read.utils;
import java.security.MessageDigest;
import java.util.Random;
/**
* 功能说明:验证码生成工具类
* 修改说明:
* @author hu
* @date 2021年4月6日 下午1:33:26
* @version 0.1
*/
public class CheckSumBuilder {
/**
* 功能说明:计算并获取CheckSum
* 修改说明:
* @author hu
* @date 2021年4月6日 下午1:33:26
* @param appSecret 密码
* @param nonce 随机串
* @param curTime 当前时间戳
* @return 返回生成的验证码
*/
public static String getCheckSum(String appSecret, String nonce, String curTime) {
return encode("sha1", appSecret + nonce + curTime);
}
/**
* 功能说明:对参数进行MD5加密
* 修改说明:
* @author hu
* @date 2021年4月6日 下午1:33:26
* @param requestBody 要加密的内容
* @return 返回MD5加密后的字符串
*/
public static String getMD5(String requestBody) {
return encode("md5", requestBody);
}
/**
* 功能说明:使用指定加密算法对字符串进行加密
* 修改说明:
* @author hu
* @date 2021年4月6日 下午1:33:26
* @param algorithm 加密算法
* @param value 要加密的字符串
* @return 返回加密后的字符串
*/
private static String encode(String algorithm, String value) {
if (value == null) {
return null;
}
try {
MessageDigest messageDigest = MessageDigest.getInstance(algorithm);
messageDigest.update(value.getBytes());
return getFormattedText(messageDigest.digest());
} catch (Exception e) {
throw new RuntimeException(e);
}
}
/**
* 功能说明:把字节数组格式化为16进制字符串
* 修改说明:
* @author hu
* @date 2021年4月6日 下午1:33:26
* @param bytes 字节数组
* @return 返回格式化后的字符串
*/
private static String getFormattedText(byte[] bytes) {
int len = bytes.length;
StringBuilder buf = new StringBuilder(len * 2);
for (int j = 0; j < len; j++) {
buf.append(HEX_DIGITS[(bytes[j] >> 4) & 0x0f]);
buf.append(HEX_DIGITS[bytes[j] & 0x0f]);
}
return buf.toString();
}
private static final char[] HEX_DIGITS = {'0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'a', 'b', 'c', 'd', 'e', 'f'};
public static String getRandomString(int length){
String str="abcdefghijklmnopqrstuvwxyz0123456789";
Random random=new Random();
StringBuilder sb=new StringBuilder();
for(int i=0;i<length;i++){
int number=random.nextInt(36);
sb.append(str.charAt(number));
}
return sb.toString();
}
}