我需要将签名的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 8不再支持JDBC-ODBC桥.有没有办法在Java 8中没有桥接器的情况下访问旧版MDB文件?遗产,我的意思是Access 2.0.UCanAccess不支持这样的旧版本,这是在这里提出的.
我有一个我需要通过别名引用的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)
有任何想法吗?
我正在使用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) 我正在尝试使用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)