【问题标题】:Error "Malformed content." in Signature Verification错误“格式错误的内容”。在签名验证中
【发布时间】:2017-04-05 03:55:50
【问题描述】:

我想验证我的签名。我的签名是一个字节数组。我用海绵城堡 我收到错误“org.spongycastle.cms.CMSException:格式错误的内容。” 这是我的代码:

   String base64 = Base64.toBase64String(signedchallenge);
   CMSSignedData cms = new CMSSignedData(Base64.decode(base64));
   Store store = cms.getCertificates();
   SignerInformationStore signers = cms.getSignerInfos();
   Collection c = signers.getSigners();

我在“CMSSignedData cms = new CMSSignedData(Base64.decode(base64));”行中出现错误

我也使用这种方法生成签名挑战。它在智能购物车中做到了

          Signature signature=Signature.getInstance(Signature.ALG_RSA_SHA_PKCS1,false);
      signature.init(thePrivateKey,Signature.MODE_SIGN);
      signLength=signature.sign(buffer,(short)(ISO7816.OFFSET_CDATA & 0xFF), inputlength, buffer, (short)(0));
      apdu.setOutgoingAndSend((short)0,signLength);

【问题讨论】:

  • code的第一个sn-p不是签名验证。我猜签名生成为bufferbuffersignedchallenge是什么关系?显示完整代码。公钥在哪里?您想要简单的 PKCS#1 验证吗?
  • 谢谢你回答我。是的,我编辑了我的代码。已签名的质询在缓冲区中。我不会为验证编写完整的代码。publickey 并不重要。我从另一种方法得到它。是的,这是我生成符号的代码。我想和我的私人 ke 签署一个挑战。什么是标准?我会为符号生成犯错吗?如果好的话我想用这个方法
  • 您将需要公钥来验证 PKCS#1 签名。这是一个标准的数字签名,但您有关于嵌入 pkcs1 的“CMS”格式的邮政编码。我提供了一个答案来验证 PKCS#1 签名
  • 这是否意味着我应该生成一个 cms signe 格式?
  • CMS 封装了数字签名,包括签名时间或使用的 X509 证书等其他属性,CMS 值以 ASN.1 语法编码。用法取决于您的用例的目的。不知道细节是不可能给建议的。我建议在这里发布您的问题security.stackexchange.com

标签: android digital-signature bouncycastle smartcard contactless-smartcard


【解决方案1】:

根据javacard documentation

ALG_RSA_SHA_PKCS1 生成一个 20 字节的 SHA 摘要,根据 PKCS#1 (v1.5) 方案填充摘要,并使用 RSA 对其进行加密

要在 Android 端验证签名,请使用此代码

Signature sig = Signature.getInstance("SHA1withRSA");
sig.initVerify(publicKey);
sig.update(challenge);
boolean verifies = sig.verify(signedchallenge);

其中signedchallenge 是buffer 上从(short)(ISO7816.OFFSET_CDATA & 0xFF)signLength 可用的签名,challenge 是要签名的原始数据

【讨论】:

  • 非常感谢亲爱的 Pedrofb。我也可以在 C# .net 中使用相同的代码吗?我在 C# 和 bouncycastle 中使用这段代码(在我的问题中),我在 c# 中也有这个问题。不要在你的代码中使用 bouncycastle 吗?你能给我一个充气城堡的代码吗?
  • 您不需要 'bouncycastle' 来验证 RSA 签名,因为 Java 和 C# 具有本机支持。(但不支持 CMS)在此链接 stackoverflow.com/questions/8437288/… 您有一个与 C# 类似的示例跨度>
  • 对不起,亲爱的佩德罗夫。我有将字节数组公钥转换为 rsa 参数的问题。我写了这篇文章“stackoverflow.com/questions/40734380/…”我可以在 c# 中将 boncycastle 用于 pkcs#1 吗?
  • 我没有使用 C# 的经验。 SO中有一些链接。检查这个stackoverflow.com/questions/11506891/…
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-05-11
  • 2016-03-09
  • 2015-11-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-10-13
相关资源
最近更新 更多