From: kaixiang.xia Date: Mon, 1 Feb 2021 03:10:11 +0000 (+0800) Subject: qrcode取8位sign X-Git-Tag: 1.0.31^2~4 X-Git-Url: https://source.supwisdom.com/gerrit/gitweb?a=commitdiff_plain;h=43a0bcc8ba11e94b1c258b2c905dd8a6221e06c2;p=epayment%2Ffood_payapi.git qrcode取8位sign --- diff --git a/bus-qrcode/build.gradle b/bus-qrcode/build.gradle index 0817cb6e..8559f1d9 100644 --- a/bus-qrcode/build.gradle +++ b/bus-qrcode/build.gradle @@ -7,7 +7,7 @@ plugins { group = rootProject.group -def sdkVersion = '1.3.5' +def sdkVersion = '1.3.6' sourceCompatibility = 1.8 targetCompatibility = 1.8 diff --git a/bus-qrcode/src/main/java/com/supwisdom/dlpay/busqrcode/QrCode.java b/bus-qrcode/src/main/java/com/supwisdom/dlpay/busqrcode/QrCode.java index 93070d0c..e920f0e1 100644 --- a/bus-qrcode/src/main/java/com/supwisdom/dlpay/busqrcode/QrCode.java +++ b/bus-qrcode/src/main/java/com/supwisdom/dlpay/busqrcode/QrCode.java @@ -13,7 +13,6 @@ import java.security.NoSuchAlgorithmException; import java.time.Duration; import java.time.Instant; import java.util.*; -import java.util.concurrent.TimeUnit; import static com.supwisdom.dlpay.busqrcode.BinUtil.*; import static com.supwisdom.dlpay.busqrcode.CryptoUtil.*; @@ -37,7 +36,7 @@ public class QrCode { qrDataKeys.add(FIELD_CARDTYPE); qrDataKeys.add(FIELD_TOTP); qrDataKeys.add(FIELD_RANDOM); -// qrDataKeys.add(FIELD_SIGN); + qrDataKeys.add(FIELD_SIGN); } private Builder qrBuilder; @@ -271,18 +270,17 @@ public class QrCode { } 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, qrData.getBytes(), qrBuilder.iv); + final byte[] signT = new byte[8]; + System.arraycopy(sign, 0, signT, 0, 8); //取前8位 + final byte[] encDataPlain = byteConcat(qrData.getBytes(), DELIMITER.getBytes(), signT); + final byte[] encData = aesEncryptCFB(qrBuilder.rootKey, encDataPlain, qrBuilder.iv); final String code = encodeBase64(encData); String result = code; if (qrBuilder.prefix != null) { result = qrBuilder.prefix + code; } if (qrBuilder.debug) { - System.out.println("hex sign=[" + encodeHex(sign) + "]"); + System.out.println("hex sign=[" + encodeHex(signT) + "]"); System.out.println("hex encDataPlain=[" + encodeHex(encData) + "]"); System.out.println("QR code=[" + result + "]"); System.out.println("====================== Build QR Code End ================================="); @@ -321,8 +319,8 @@ public class QrCode { if (qrBuilder.debug) { System.out.println("encDataPlain=[" + encData + "]"); } - final String[] fields = encData.split(DELIMITER, 5); - if (fields.length < 5) { + final String[] fields = encData.split(DELIMITER, 6); + if (fields.length < 6) { throw new RuntimeException("二维码数据异常!"); } Map result = new HashMap<>(); @@ -340,16 +338,16 @@ public class QrCode { 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位 + final byte[] signT = new byte[8]; + System.arraycopy(calcSign, 0, signT, 0, 8); //取前8位 if (qrBuilder.debug) { -// System.out.println("calcSign=[" + new String(calcSign) + "]"); + System.out.println("calcSign=[" + new String(signT) + "]"); System.out.println(" sign=[" + result.get(FIELD_SIGN) + "]"); System.out.println("====================== Decode QR Code End ================================="); } -// if (!new String(signT).equalsIgnoreCase(result.get(FIELD_SIGN))) { -// throw new RuntimeException("二维码验证错误!"); -// } + if (!new String(signT).equalsIgnoreCase(result.get(FIELD_SIGN))) { + throw new RuntimeException("二维码验证错误!"); + } return result; } diff --git a/payapi/build.gradle b/payapi/build.gradle index e0297651..d1441749 100644 --- a/payapi/build.gradle +++ b/payapi/build.gradle @@ -125,7 +125,7 @@ dependencies { implementation group: 'com.alipay.sdk', name: 'alipay-sdk-java', version: '3.7.110.ALL' /*大理二维码jar*/ - implementation 'com.supwisdom:dlsmk-qrcode:1.3.5' + implementation 'com.supwisdom:dlsmk-qrcode:1.3.6' annotationProcessor "org.springframework.boot:spring-boot-configuration-processor" annotationProcessor 'org.projectlombok:lombok:1.18.8'