适配card short类型,取消int long

This commit is contained in:
qzh
2025-09-05 16:40:12 +08:00
parent 11c46c5557
commit 8893172ea9
4 changed files with 132 additions and 89 deletions

View File

@@ -1,15 +1,34 @@
package com.zuc.zuc256;
import javacard.framework.JCSystem;
/**
* MAC上下文类
* MAC上下文类Java Card兼容版本
*/
public final class Zuc256MacCtx {
int[] LFSR = new int[16];
int R1;
int R2;
byte[] buf = new byte[4];
int buflen;
int[] T = new int[4];
int[] K0 = new int[4];
int macbits;
// 所有32位int类型改为16位short类型适应Java Card 16位处理能力
short[] LFSR;
short R1;
short R2;
byte[] buf;
short buflen; // 长度变量使用short类型
short[] T;
short[] K0;
short macbits; // MAC位数使用short类型
// 构造函数初始化瞬态数组符合Java Card内存管理规范
public Zuc256MacCtx() {
// 使用瞬态内存存储敏感数据,提高安全性
// CLEAR_ON_DESELECT卡片复位或选择其他应用时清除数据
LFSR = JCSystem.makeTransientShortArray((short)16, JCSystem.CLEAR_ON_DESELECT);
buf = JCSystem.makeTransientByteArray((short)4, JCSystem.CLEAR_ON_DESELECT);
T = JCSystem.makeTransientShortArray((short)4, JCSystem.CLEAR_ON_DESELECT);
K0 = JCSystem.makeTransientShortArray((short)4, JCSystem.CLEAR_ON_DESELECT);
// 初始化变量
R1 = 0;
R2 = 0;
buflen = 0;
macbits = 0;
}
}