小编And*_*dre的帖子

使用Java XML数字签名API的xml签名的摘要值错误

我需要将签名的XML文件发送给巴西的政府机构.问题是我的Java代码计算的摘要(使用Java XML数字签名API与使用XMLSEC等其他工具生成的摘要不同).

这是我用来为某些XML节点生成XML签名的代码:

private synchronized void sign(XmlObject obj) throws Exception {
        initKeystore();
        XMLSignatureFactory fac = XMLSignatureFactory.getInstance("DOM");
        List<Transform> transformList = new ArrayList<Transform>();
        Transform envelopedTransform = fac.newTransform(Transform.ENVELOPED, (TransformParameterSpec) null);
        Transform c14NTransform = fac.newTransform("http://www.w3.org/TR/2001/REC-xml-c14n-20010315",
                (TransformParameterSpec) null);
        transformList.add(envelopedTransform);
        transformList.add(c14NTransform);
        Reference ref = fac.newReference("", fac.newDigestMethod(DigestMethod.SHA1, null),
                Collections.singletonList(fac.newTransform(Transform.ENVELOPED, (TransformParameterSpec) null)), null,
                null);
        SignedInfo si = fac.newSignedInfo(
                fac.newCanonicalizationMethod(CanonicalizationMethod.INCLUSIVE, (C14NMethodParameterSpec) null),
                fac.newSignatureMethod(SignatureMethod.RSA_SHA1, null), Collections.singletonList(ref));
        KeyStore ks = KeyStore.getInstance("PKCS12");
        ks.load(new FileInputStream(System.getProperty("javax.net.ssl.keyStore")),
                System.getProperty("javax.net.ssl.keyStorePassword").toCharArray());
        KeyStore.PrivateKeyEntry keyEntry = (KeyStore.PrivateKeyEntry) ks.getEntry("entry",
                new KeyStore.PasswordProtection(System.getProperty("javax.net.ssl.keyStorePassword").toCharArray()));

        X509Certificate cert = (X509Certificate) …
Run Code Online (Sandbox Code Playgroud)

java xml digital-signature xmlsec

25
推荐指数
1
解决办法
6502
查看次数

使用Java 8操作旧版MDB(Access 2.0)

Java 8不再支持JDBC-ODBC桥.有没有办法在Java 8中没有桥接器的情况下访问旧版MDB文件?遗产,我的意思是Access 2.0.UCanAccess不支持这样的旧版本,这是在这里提出的.

java ms-access jdbc-odbc java-8

10
推荐指数
1
解决办法
979
查看次数

keytool找不到别名

我有一个我需要通过别名引用的pfx证书.问题是keytool无法找到该别名,即使它显示在列表中.

keytool -list -keystore temp.pfx -storetype pkcs12
Run Code Online (Sandbox Code Playgroud)

给我这个:

...
0c5fc7cef279ca390acd2d6bac9ffcf8_ba0cbbb3-323d-4394-8e76-47838adb2a9c, 08/03/2013, PrivateKeyEntry,
...
Run Code Online (Sandbox Code Playgroud)

但每当我尝试使用keytool对该别名做任何事情(即导出,重命名)时,它都会给我一个错误:

keytool error: java.lang.Exception: Alias <0c5fc7cef279ca390acd2d6bac9ffcf8_ba0cbbb3-323d-4394-8e76-47838adb2a9c> does not exist
Run Code Online (Sandbox Code Playgroud)

有任何想法吗?

ssl alias keytool

8
推荐指数
1
解决办法
2万
查看次数

使用名称将参数绑定到Perl中的postgres查询

我正在使用Perl脚本,我想使用命名参数在Postgres数据库中执行查询.在DBI文件说,这不便于携带:

有些驱动程序还允许使用占位符,例如:name和:N(例如:1,:2,依此类推)除了?,但它们的使用不可移植

无论如何我还想那样做.有谁知道Postgres驱动程序是否实现了这一点?

而不是执行这样的查询:

 $q = $pg->prepare($query);
 $q->bind_param(1, "value");
 $q->bind_param(2, "value");
 $q->execute();
Run Code Online (Sandbox Code Playgroud)

我想做这样的事情:

 $q = $pg->prepare($query);
 $q->bind_param("parameterX", "value");
 $q->bind_param("parameterY", "value");
 $q->execute();
Run Code Online (Sandbox Code Playgroud)

干杯!

编辑

正确的语法如下(我错过了冒号):

 $q = $pg->prepare($query);
 $q->bind_param(":parameterX", "value");
 $q->bind_param(":parameterY", "value");
 $q->execute();
Run Code Online (Sandbox Code Playgroud)

postgresql perl dbi

4
推荐指数
1
解决办法
2192
查看次数

使用有效的客户端证书时HttpClient 403错误

我正在尝试使用Java在网站上自动执行某些任务.我有一个有效的客户端为该网站(当我使用Firefox登录时工作),但当我尝试使用http客户端登录时,我一直收到403错误.请注意,我希望我的信任商店信任任何东西(我知道它不安全,但此时我并不担心).

这是我的代码:

    KeyStore keystore = getKeyStore();//Implemented somewhere else and working ok
    String password = "changeme";

    SSLContext context = SSLContext.getInstance("SSL");
    KeyManagerFactory kmfactory = KeyManagerFactory.getInstance(KeyManagerFactory.getDefaultAlgorithm());
    kmfactory.init(keystore, password.toCharArray());
    context.init(kmfactory.getKeyManagers(), new TrustManager[] { new X509TrustManager() {
        @Override
        public void checkClientTrusted(java.security.cert.X509Certificate[] arg0, String arg1)
                throws CertificateException {
        }
        @Override
        public void checkServerTrusted(java.security.cert.X509Certificate[] arg0, String arg1)
                throws CertificateException {
        }

        @Override
        public java.security.cert.X509Certificate[] getAcceptedIssuers() {
            return null;
        }
    } }, new SecureRandom());
    SSLSocketFactory sf = new SSLSocketFactory(context);

    Scheme httpsScheme = new Scheme("https", 443, sf);
    SchemeRegistry schemeRegistry …
Run Code Online (Sandbox Code Playgroud)

java ssl certificate apache-commons-httpclient

3
推荐指数
1
解决办法
7179
查看次数