gpt4 book ai didi

java - 如何使用 Java Card 加密样本?

转载 作者:行者123 更新时间:2023-11-30 08:09:24 24 4
gpt4 key购买 nike

我正在尝试运行 example from IBM website .我写了这个方法:

public static byte[] cipher(byte[] inputData) {
Cipher cipher
= Cipher.getInstance(
Cipher.ALG_DES_CBC_NOPAD, true);

DESKey desKey = (DESKey) KeyBuilder.buildKey(
KeyBuilder.TYPE_DES,
KeyBuilder.LENGTH_DES,
false);

byte[] keyBytes = {(byte) 0x01, (byte) 0x02, (byte) 0x03, (byte) 0x04};
desKey.setKey(keyBytes, (short) 0);

cipher.init(desKey, Cipher.MODE_ENCRYPT);
byte[] outputData = new byte[8];

cipher.doFinal(inputData, (short) 0, (short) inputData.length, outputData, (short) 0);
return outputData;
}

并调用此方法cipher("test".getBytes());。当我调用此 servlet 服务器时,会出现内部服务器错误和 javacard.security.CryptoException

我尝试了 ALG_DES_CBC_ISO9797_M1ALG_DES_CBC_ISO9797_M2(和其他)并得到了相同的异常。

如何在 Java Card Connected 上运行简单的密码示例?

更新

正如@vojta 所说, key 的长度必须为 8 个字节。所以它一定是这样的:

byte[] keyBytes = {(byte) 0x01, (byte) 0x02, (byte) 0x03, (byte) 0x04, (byte) 0x01, (byte) 0x02, (byte) 0x03, (byte) 0x04};

我不知道为什么,但它只在替换时有效

Cipher cipher = Cipher.getInstance(Cipher.ALG_DES_CBC_NOPAD, true);

Cipher cipher = Cipher.getInstance(Cipher.ALG_DES_CBC_ISO9797_M2, false);

我在文档中找不到任何相关信息。

最佳答案

这些行似乎是错误的:

byte[] keyBytes = {(byte) 0x01, (byte) 0x02, (byte) 0x03, (byte) 0x04};
desKey.setKey(keyBytes, (short) 0);

DES key 应该超过 4 个字节,对吗?标准 DES key 长度为 8 个字节(强度为 56 位)。

关于java - 如何使用 Java Card 加密样本?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32493512/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com