package ch01basic.signature; /** * Created with IntelliJ IDEA. * User: Administrator * Date: 12-7-23 * Time: 上午8:58 * To change this template use File | Settings | File Templates */ import java.security.KeyFactory; import java.security.PublicKey; import java.security.Signature; import java.security.spec.X509EncodedKeySpec; import static ch01basic.signature.KeyUtil.hexStrToBytes; public class VerifySignature { public void run() { try { String pubkeyvalue = "30819f300d06092a864886f70d010101050003818d003081890281810093dbe94b47911b429ae9cbb7181651492a29532a74caef2f15385334d168d75d236b4752ccf24d29ed7f3fa5d52dc18d106f8f1d7fcafac546f9de5bb96633dc3e7b92cf527221aa736b97669e8a8389587cfe05aeaaad15f3f2409fea47ec00c1b81f6036c4c71bdba66230f67114a1e29ee29c5bb6d3f9b5d3171ad0b11fc90203010001";//这是GenerateKeyPair输出的公钥编码 X509EncodedKeySpec bobPubKeySpec = new X509EncodedKeySpec(hexStrToBytes(pubkeyvalue)); KeyFactory keyFactory = KeyFactory.getInstance("RSA"); PublicKey pubKey = keyFactory.generatePublic(bobPubKeySpec); String info = "orderId=10dkfadsfksdkssdkd&amount=80&orderTime=20060509"; byte[] signed = hexStrToBytes("3e5739184a60196ae0a74730489ef511c86f6556ef1a25dbddca96c860d27074f8942bf5e551ba75c97b4f0286359a3133cadaef746c33b5b97472d94373a789116deb6aeff2d9f428b5264f0e83c4a8c64ec750c086143edc9f9c4ac6eef7b338a46fa07801b4bcf27cdc0cab32bb11fca5f993c644dd071de98f8072590937");//这是SignatureData输出的数字签名 Signature signetcheck = Signature.getInstance("MD5withRSA"); signetcheck.initVerify(pubKey); signetcheck.update(info.getBytes()); if (signetcheck.verify(signed)) { System.out.println("info=" + info); System.out.println("签名正常"); } else System.out.println("非签名正常"); } catch (Exception e) { e.printStackTrace(); } } public static void main(String[] args) { new VerifySignature().run(); } }