以下为java版本
/* */ @Service
/* */ public class test implements IEncryptService
/* */ {
/* */ private SymmetricCrypto sm4;
/* */
/* */ @PostConstruct
/* */ public void init() {
/* 26 */ this.sm4 = (SymmetricCrypto)SmUtil.sm4("be2f1390daf768b7".getBytes());
/* */ }
/* */
/* */
/* */ public String encryptHex(String str) {
/* 31 */ if (StringUtils.isBlank(str)) {
/* 32 */ return str;
/* */ }
/* 34 */ return this.sm4.encryptHex(str);
/* */ }
/* */
/* */
/* */ public String decryptStr(String data) {
/* 39 */ if (StringUtils.isBlank(data)) {
/* 40 */ return data;
/* */ }
/* 42 */ return this.sm4.decryptStr(data);
/* */ }
/* */
/* */
/* */ public byte[] getKey(Long examPlanId, Long examineeId, String openPwd, String paperNum) {
/* 47 */ byte[] saltBytes = "w7jkl+m=".getBytes();
/* 48 */ String examPlanIdStr = "0000" + examPlanId;
/* 49 */ byte[] examPlanIdBytes = examPlanIdStr.substring(examPlanIdStr.length() - 4).getBytes();
/* 50 */ String examineeIdStr = "0000" + examineeId;
/* 51 */ byte[] examineeIdBytes = examineeIdStr.substring(examineeIdStr.length() - 4).getBytes();
/* 52 */ byte[] openPwdBytes = openPwd.getBytes();
/* 53 */ byte[] paperNumBytes = paperNum.getBytes();
/* 54 */ byte[] key = new byte[16]; int i;
/* 55 */ for (i = 0; i < examineeIdBytes.length; i++) {
/* 56 */ key[i] = (byte)(examineeIdBytes[i] + openPwdBytes[i]);
/* */ }
/* 58 */ for (i = 0; i < saltBytes.length; i++) {
/* 59 */ key[i + 4] = (byte)(saltBytes[i] + paperNumBytes[i + 5]);
/* */ }
/* 61 */ for (i = 0; i < examPlanIdBytes.length; i++) {
/* 62 */ key[i + 12] = (byte)(examPlanIdBytes[i] + openPwdBytes[i + 1]);
/* */ }
/* */
/* 65 */ return key;
/* */ }
/* */
/* */
/* */ public String encryptHex(String data, byte[] key) {
/* 70 */ if (StringUtils.isEmpty(data)) {
/* 71 */ return null;
/* */ }
/* */
/* 74 */ SM4 sM4 = SmUtil.sm4(key);
/* 75 */ return sM4.encryptHex(data);
/* */ }
/* */
/* */
/* */ public String decryptStr(String data, byte[] key) {
/* 80 */ if (StringUtils.isEmpty(data)) {
/* 81 */ return null;
/* */ }
/* */
/* 84 */ SM4 sM4 = SmUtil.sm4(key);
/* 85 */ return sM4.decryptStr(data, CharsetUtil.CHARSET_UTF_8);
/* */ }
/* */ }
python版本该如何体现
貌似 加密值9a56bb249f1b1f28d7b0aa9aac86eb13为 正确 或者 错误
但是我使用python测试一直失败 |