sha1 - 是否可以在 javacard 框架 2.2.1 版本中使用 'ALG_HMAC_SHA1' 类中的 'Signature' 方法?

标签 sha1 hmac javacard one-time-password hmacsha1

我想使用 javacard.security.Signature 类中的 ALG_HMAC_SHA1 方法。但是我的 javacard 框架版本是 2.2.1,所以 Signature 类不包括这个版本的这个方法。 它在 2.2.2 之后包含此方法。是否可以在不升级框架版本的情况下使用此方法?

最佳答案

您始终可以只使用在 2.2.2 框架中为常量 ALG_HMAC_SHA1 (= (byte)24) 找到的值并将其传递给 Signature.getInstance() 方法。所以使用不是问题。但是,要运行小程序的智能卡硬件需要支持此算法,以便您能够使用。

因此,如果您的智能卡硬件支持 JC 2.2.1,则使用 ALG_HMAC_SHA1 的值调用 getInstance() 方法通常会导致 CryptoException 原因(CryptoException.NO_SUCH_ALGORITHM)表明该算法不受支持,JC 2.2.1 不支持任何 HMAC 算法)。直接使用public常量会导致上传或安装失败。

在此澄清一下,我并不是说针对不同的框架版本进行编译可能会突然解决您的问题。我更愿意建议您不要简单地升级卡上可用的功能。

关于sha1 - 是否可以在 javacard 框架 2.2.1 版本中使用 'ALG_HMAC_SHA1' 类中的 'Signature' 方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20518988/

相关文章:

Java 卡 RSAPrivateCrtKey 私有(private)指数 "d"

java - GlobalPlatform 和 JavaCard 是什么关系?

smartcard - 智能卡如何在 T0 中区分 Case 2 和 Case 3 APDU header ?

javascript - 如何使用 node.js 加密计算 blob 的 sha1 哈希

python - Python 中的 HMAC 签名请求

git - 在我的 repo 协议(protocol)中,最长的哈希前缀必须有多长才能防止重叠?

java - Java SecretKeySpec 的 C# 等价物是什么

ruby - digest/hmac 是 ruby​​ 标准库的一部分

git - 为什么 git hash-object 返回的哈希值与 openssl sha1 不同?

php - PHP 与 C 中的增量哈希