吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 198|回复: 0
收起左侧

[经验求助] javaSM

[复制链接]
Maps0602 发表于 2024-7-29 23:35
25吾爱币
以下为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测试一直失败

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-12-12 14:27

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表