35 lines
1.1 KiB
Java
35 lines
1.1 KiB
Java
package com.zuc.zuc256;
|
||
|
||
import javacard.framework.JCSystem;
|
||
|
||
/**
|
||
* MAC上下文类(Java Card兼容版本)
|
||
*/
|
||
public final class Zuc256MacCtx {
|
||
// 所有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;
|
||
}
|
||
}
|