}
public static String encodeBase64(byte[] data) {
- return Base64.encodeBase64String(data);
+ return new Base64(true).encodeAsString(data);
}
public static byte[] decodeBase64(String data) {
- return Base64.decodeBase64(data);
+ return new Base64(true).decode(data);
}
}
logger.info("=======================================================");
}
+ final String randomStr = getRandomString(6); //随机数
final String totp = genTOTPWithSeed(qrBuilder.seed, 8);
final String encDataPlain = new StringJoin(DELIMITER)
.add(qrBuilder.uid)
.add(qrBuilder.scope)
- .add(totp).toString();
+ .add(totp)
+ .add(randomStr).toString();
final byte[] encData = aesEncryptCFB(qrBuilder.rootKey, encDataPlain.getBytes(), qrBuilder.iv);
final String code = encodeBase64(encData);
logger.info("Decode data : <" + encDataPlain + ">");
}
String[] fields = encDataPlain.split(DELIMITER);
- if (fields.length < 3) {
+ if (fields.length < 4) {
throw new RuntimeException("qrcode plain text format error!");
}
String uid = fields[0];