我正在尝试验证签名 base45 加密 JSON 护照数据的签名。
主要目标 - 验证我从服务器检索的数据。我找到了一些代码并且无法理解一些参数(也许我完全错了)
byte[] signatureBytes = Base64.decode(signature, Base64.DEFAULT);
Signature signatureInstance = Signature.getInstance("SHA256withRSA", "BC");
signatureInstance.initVerify(publicKey);
signatureInstance.update(signedData.getBytes("UTF-8"));
boolean result = signatureInstance.verify(signatureBytes);
所以在这里我们看到:
- signature
- publicKey
- signedBytes
我可以从服务器检索公钥。这就像base64String。下面的代码我用来将其转换为 PublicKey
String publicKeyString = "base64PublicKey";
PublicKey publicKey = KeyFactory.getInstance("RSA").
generatePublic(new X509EncodedKeySpec(DatatypeConverter.parseBase64Binary(publicKeyString)));
但是其他两个参数呢:签名和签名数据。
我可以检索签名为 base45 加密 JSON 的数据,但无法理解该签名或 signedData 是什么。例如,如果是签名,那么签名数据是什么?我对这部分代码不熟悉,真的不明白。也许有人可以帮助我?