文章标题
来源:互联网 发布:网站入侵数据更改高手 编辑:程序博客网 时间:2024/05/18 09:34
/// 验证签名 public static boolean Verify(String Xml, String publicKeyPath) throws Exception { int begin = Xml.indexOf("<Signature>") + "<Signature>".length(); int len = Xml.indexOf("</Signature>") - begin; String SignatureString = Xml.substring(begin, len+begin); String OriginalString = Xml.replace("<Signature>" + SignatureString + "</Signature>", ""); // 将base64签名数据转码为字节 byte[] signedBase64 = Base64Utils.decodeFromString(SignatureString);//(OriginalString.getBytes()); // TODO 数字证书 InputStream inStream = new FileInputStream(publicKeyPath);// 文件 CertificateFactory cf = CertificateFactory.getInstance("X.509");//X.509 X509Certificate cert = (X509Certificate) cf.generateCertificate(inStream); inStream.close(); // 得到公钥 RSAPublicKey publicKey = (RSAPublicKey) cert.getPublicKey(); // 构建签名 Signature signature = Signature.getInstance(cert.getSigAlgName());//SHA1WithRSA signature.initVerify(publicKey); signature.update(Base64Utils.encode(OriginalString.getBytes())); return signature.verify(signedBase64); } /** * <p> * 生成数据签名 * </p> * * @param data 源数据 * @param keyStorePath 密钥库存储路径 * @param alias 密钥库别名 * @param password 密钥库密码 * @return * @throws Exception */ //如果已知私钥XXX.pfx,和私钥密码,但不清楚密钥库别名是什么,可以用以下命令查看私钥信息 //keytool -v -list -storetype pkcs12 -keystore XXX.pfx public static String sign(String data, String keyStorePath, String alias, String password) throws Exception { // 获取私钥 FileInputStream in = new FileInputStream(keyStorePath); KeyStore keyStore = KeyStore.getInstance("PKCS12"); keyStore.load(in, password.toCharArray()); in.close(); // 获得证书 X509Certificate x509Certificate =(X509Certificate)keyStore.getCertificate(alias); // X509Certificate x509Certificate = (X509Certificate) getCertificate(keyStorePath, alias, password); // 取得私钥 PrivateKey privateKey = (PrivateKey) keyStore.getKey(alias, password.toCharArray()); // 构建签名 Signature signature = Signature.getInstance(x509Certificate.getSigAlgName()); signature.initSign(privateKey); signature.update(data.getBytes("utf-8")); byte[] sing = signature.sign(); return Base64Utils.encodeToString(sing); }
0 0
- 文章标题文章标题文章标题文章标题文章标题文章标题文章标题文章标题文章标题文章标题文章标题文章标题文章标题文章标题文章标题文章标题文章标题
- 文章标题
- 文章标题
- 文章标题
- 文章标题 文章标题 文章标题 文章标题
- 文章标题
- 文章标题
- 文章标题
- 文章标题
- 文章标题
- 文章标题
- 文章标题
- 文章标题
- 文章标题
- 文章标题
- 文章标题
- 文章标题
- 文章标题
- 异常: access denied ("java.lang.RuntimePermission" "accessDeclaredMembers")
- jsp页面div浮动弹出
- Web debug技巧汇总
- CAS 单点登录
- jquery修改css的两种方法
- 文章标题
- HDU 5621 KK's Point (组合数学)
- poj 2230
- redis数据类型(五)有序集合类型
- Python测试框架doctest
- firefox等浏览器F12控制台提示“格式不佳”或“开始标记的格式不正确。属性应由空格分隔”
- Android: activity跳转时,每次都自动调用onfinish()
- 调用外围系统的webservice服务注意事项
- 《Linux驱动》分层分离