qrDataKeys.add(FIELD_CARDTYPE);
qrDataKeys.add(FIELD_TOTP);
qrDataKeys.add(FIELD_RANDOM);
- qrDataKeys.add(FIELD_SIGN);
+// qrDataKeys.add(FIELD_SIGN);
}
private Builder qrBuilder;
}
final byte[] sign = sha256(byteConcat(qrData.getBytes(), factor));
+// final byte[] signT = new byte[20];
+// System.arraycopy(sign, 0, signT, 0, 20); //取前20位
final byte[] encDataPlain = byteConcat(qrData.getBytes(), DELIMITER.getBytes(), sign);
- final byte[] encData = aesEncryptCFB(qrBuilder.rootKey, encDataPlain, qrBuilder.iv);
+// final byte[] encData = aesEncryptCFB(qrBuilder.rootKey, encDataPlain, qrBuilder.iv);
+ final byte[] encData = aesEncryptCFB(qrBuilder.rootKey, qrData.getBytes(), qrBuilder.iv);
final String code = encodeBase64(encData);
String result = code;
if (qrBuilder.prefix != null) {
if (qrBuilder.debug) {
System.out.println("encDataPlain=[" + encData + "]");
}
- final String[] fields = encData.split(DELIMITER, 6);
- if (fields.length < 6) {
+ final String[] fields = encData.split(DELIMITER, 5);
+ if (fields.length < 5) {
throw new RuntimeException("二维码数据异常!");
}
Map<String, String> result = new HashMap<>();
final String uid = result.get(FIELD_UID);
final byte[] factor = getSignFactor(uid);
final byte[] calcSign = sha256(byteConcat(qrData.getBytes(), factor));
+// final byte[] signT = new byte[20];
+// System.arraycopy(calcSign, 0, signT, 0, 20); //取前20位
if (qrBuilder.debug) {
- System.out.println("calcSign=[" + new String(calcSign) + "]");
+// System.out.println("calcSign=[" + new String(calcSign) + "]");
System.out.println(" sign=[" + result.get(FIELD_SIGN) + "]");
System.out.println("====================== Decode QR Code End =================================");
}
- if (!new String(calcSign).equalsIgnoreCase(result.get(FIELD_SIGN))) {
- throw new RuntimeException("二维码验证错误!");
- }
+// if (!new String(signT).equalsIgnoreCase(result.get(FIELD_SIGN))) {
+// throw new RuntimeException("二维码验证错误!");
+// }
return result;
}