有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

Java卡加密异常RSA密钥加密

我试图在Java卡上重新创建一个公钥,并用它来加密一些数据

下面是构建我正在使用的公钥的代码:

rsaPublicId = (RSAPublicKey) KeyBuilder.buildKey(KeyBuilder.TYPE_RSA_PUBLIC, KeyBuilder.LENGTH_RSA_2048, false);
rsaPublicId.setExponent(rsaExponent, (short) 0, (short) rsaExponent.length);
rsaPublicId.setModulus(rsaPublicModulus, (short) 12, (short) ((short) rsaPublicModulus.length - (short) 12));

cipherId.init(rsaPublicId, Cipher.MODE_ENCRYPT);

当我尝试加密数据时,我使用以下代码:

cipherId.doFinal(serviceBytes, (short) 0, (short) 16, buffer, (short) 0);

但它发生在一张javacard上。安全cryptoException,详细信息为“null”

cipherId = Cipher.getInstance(Cipher.ALG_RSA_PKCS1, false);

模数设置为308,用Java创建并发送到卡


共 (2) 个答案

  1. # 1 楼答案

    你的算法错了

    cipherId = Cipher.getInstance(Cipher.ALG_RSA_PKCS1, false);
    

    请试一试

    cipherId = Cipher.getInstance(Cipher.ALG_RSA_NOPAD, false);
    
  2. # 2 楼答案

    可能模数长度不等于2048位,可能会抛出非法使用