作者darkk6 (CJV)
看板java
標題[問題] 由 Signature.verify 反推資料
時間Sun Oct 10 00:28:35 2010
不好意思,標題實在不知道怎麼下,我的問題是這樣:
我最近取得了一個原始碼,是一個驗證的 method
傳入兩個參數,大致上長這樣:
PK 是由一個已知的字串經過 Base64 decode 後取得的 byte[]
public boolean test(String arg1,String arg2)
{
X509EncodedKeySpec X509 = new X509EncodedKeySpec(PK);
PublicKey pubKey =KeyFactory.getInstance("RSA").generatePublic(X509);
Signature localSignature = Signature.getInstance("MD5withRSA");
localSignature.initVerify(pubKey);
localSignature.update(arg1.getBytes("UTF-8"));
return localSignature.verify(base64.decode(arg2));
}
這個方法應該是用來判斷傳入的 arg1 和 arg2 是否互相呼應
但是我目前手上只有一個 arg1 的值
也就是說我的問題是,能不能藉由這些已知的條件(PK、arg1、驗證方法)
取得這個 arg1 對應的 arg2 ,讓這個方法可以 return true 呢?
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 140.127.76.13
推 LPH66:Signature.sign() 不知道是不是你要的 10/10 00:37
→ darkk6:可是 sign 需要 initSign 這部份不知道怎麼搞 > < 10/10 00:37
→ darkk6:有試過仿造同樣的方法建立 PrivateKey 去 initSign 但是 10/10 00:39
→ darkk6:使用 X509 會噴 InvalidKeyException.... 10/10 00:40
→ kogrs:arg2(signature)需要 arg1(本文)跟 private key 才能做出來 10/10 02:03
→ kogrs:若你能了解Signature的用意,應該就不會有這問題了 10/10 02:06
→ darkk6:恩,謝囉 那我猜的沒錯QQ 10/10 09:30