使用 HMACKey.setkey 时获取异常 CryptoException.ILLEGAL 值
Getting Exception CryptoException.ILLEGAL value when using HMACKey.setkey
我想在 JavaCard Applet 中生成 HMAC_SHA1 签名
我正在尝试对包含在 inBuffer 字节数组 S(字节数组,64 字节)中的消息进行签名。下面给出了来自 javacard (jc) applet 模块的函数片段。我正在使用 javacard3.0.1 库来开发 jc 小程序。
Signature m_sessionMAC = null;
HMACKey keyType = null;
// Create HMAC Key Used in Mac
m_sessionMAC = Signature.getInstance(Signature.ALG_HMAC_SHA_1, false);
// Create HMAC Key Used in Mac
keyType = (HMACKey) KeyBuilder.buildKey(KeyBuilder.TYPE_HMAC, KeyBuilder.LENGTH_HMAC_SHA_256_BLOCK_64, false);
keyType.setKey(S,(short) 0, (short) S.length);
这个 keyType.setKey 导致异常 ILLEGAL_VALUE,请指导我我做错了什么?
密钥长度以位指定 -- 引用 KeyBuilder.buildKey() documentation:
keyLength - the key size in bits. The valid key bit lengths are key type dependent. Some common key lengths are listed above in the LENGTH_* constants, for example LENGTH_DES.
这意味着:
使用 512
作为 64 字节密钥
使用 64
作为 8 字节密钥
请注意,您可以为 HMAC-SHA1 使用任何密钥长度,但是长于块大小(对于 SHA-1 为 64 字节)的密钥在使用前会转换为它们的 SHA-1 哈希(参见例如 here).
祝你项目顺利!
我想在 JavaCard Applet 中生成 HMAC_SHA1 签名
我正在尝试对包含在 inBuffer 字节数组 S(字节数组,64 字节)中的消息进行签名。下面给出了来自 javacard (jc) applet 模块的函数片段。我正在使用 javacard3.0.1 库来开发 jc 小程序。
Signature m_sessionMAC = null;
HMACKey keyType = null;
// Create HMAC Key Used in Mac
m_sessionMAC = Signature.getInstance(Signature.ALG_HMAC_SHA_1, false);
// Create HMAC Key Used in Mac
keyType = (HMACKey) KeyBuilder.buildKey(KeyBuilder.TYPE_HMAC, KeyBuilder.LENGTH_HMAC_SHA_256_BLOCK_64, false);
keyType.setKey(S,(short) 0, (short) S.length);
这个 keyType.setKey 导致异常 ILLEGAL_VALUE,请指导我我做错了什么?
密钥长度以位指定 -- 引用 KeyBuilder.buildKey() documentation:
keyLength - the key size in bits. The valid key bit lengths are key type dependent. Some common key lengths are listed above in the LENGTH_* constants, for example LENGTH_DES.
这意味着:
使用
512
作为 64 字节密钥使用
64
作为 8 字节密钥
请注意,您可以为 HMAC-SHA1 使用任何密钥长度,但是长于块大小(对于 SHA-1 为 64 字节)的密钥在使用前会转换为它们的 SHA-1 哈希(参见例如 here).
祝你项目顺利!