|
@@ -0,0 +1,53 @@
|
|
|
+package com.rongwei.bscommon.sys.utils;
|
|
|
+
|
|
|
+import java.security.SecureRandom;
|
|
|
+
|
|
|
+/**
|
|
|
+ * @author zhuang
|
|
|
+ */
|
|
|
+public class SmsCodeGenerateUtils {
|
|
|
+
|
|
|
+ private static final SecureRandom secureRandom = new SecureRandom();
|
|
|
+ private static final StringBuilder codeStringBuilder = new StringBuilder();
|
|
|
+ /**
|
|
|
+ * 采用单例模式以重用StringBuilder,同时提供一个方法来生成指定长度的验证码
|
|
|
+ */
|
|
|
+ private static final SmsCodeGenerateUtils INSTANCE = new SmsCodeGenerateUtils();
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 私有化构造方法防止外部实例化
|
|
|
+ */
|
|
|
+ private SmsCodeGenerateUtils() {
|
|
|
+ // 初始化6位
|
|
|
+ codeStringBuilder.setLength(CxConstants.CODE_LENGTH);
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 提供一个接口来获取验证码生成器实例,这样也使得未来如果有需要,可以轻松地修改生成逻辑
|
|
|
+ * @return
|
|
|
+ */
|
|
|
+ public static SmsCodeGenerateUtils getInstance() {
|
|
|
+ return INSTANCE;
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 生成6位验证码方法
|
|
|
+ * @return
|
|
|
+ */
|
|
|
+ public String generateVerificationCode() {
|
|
|
+ codeStringBuilder.setLength(0);
|
|
|
+ for (int i = 0; i < CxConstants.CODE_LENGTH; i++) {
|
|
|
+ codeStringBuilder.append(generateRandomDigit());
|
|
|
+ }
|
|
|
+ return codeStringBuilder.toString();
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 生成一个随机数字,0到9之间的整数
|
|
|
+ * @return
|
|
|
+ */
|
|
|
+ private int generateRandomDigit() {
|
|
|
+ return secureRandom.nextInt(10);
|
|
|
+ }
|
|
|
+}
|