Tag: digital signature

数字签名的XFA表格

我想以编程方式签署在Adobe Livecycle(它是XFA表单)中创建的PDF文档。 我知道用于操纵PDF的iText库,但我还没有找到任何如何签名的例子。 也许它还没有得到支持。 你知道其他任何可以做到这一点的Java库吗? 或者你知道如何签名吗? 我知道,我的问题类似于这个问题 ,但我不需要使用iText。 非常感谢您的帮助!

iText Stamping – Java

我在压印PDF文档时遇到了麻烦,而没有使数字签名无效。 目前,我成功加盖了PDF。 但是,如果文档先前已签名,则签名不再有效。 我理解为什么会发生这种情况,但如果我使用Acrobat添加文本或使用注释标记它,则签名有效。 我尝试添加注释或注释,但它仍然使签名无效。 有没有办法在不使数字签名无效的情况下使用iText为PDF添加图章? 这是我用来标记的代码片段: PdfReader reader = new PdfReader(inputstream); stamp = new PdfStamper(reader, new FileOutputStream(file)); PdfContentByte pcb; BaseFont bf = BaseFont.createFont(“Courier”, BaseFont.CP1250,BaseFont.EMBEDDED); Rectangle r = reader.getPageSizeWithRotation(1); pcb = stamp.getOverContent(1); // set the font and size float size = 12; pcb.setFontAndSize(bf, size); float width = 90; float centerX = 0, startY = 0; […]

JNLP获得许可

我最近在通过JNLP启动我的应用程序时偶然发现了一个问题。 我现在把它缩小到java.security.AccessControlException ,它拒绝我关闭我的ExecuterService 。 所以,我做了一些阅读,发现我需要权限( modifyThread )才能成功关闭服务。 我还发现我应该使用 -tag(在JNLP文件中)来请求它,但我对如何使用感到困惑。 标签的文档说: […]如果指定了all-permissions元素,则应用程序将具有对客户端计算机和本地网络的完全访问权限 。 如果应用程序请求完全访问权限,则必须对所有JAR文件进行签名 。 将提示用户 […] 从阅读本文来看,在我看来,我可以选择获得全部或无权限……这似乎是一个令人困惑的实现。 因为我只需要一个关闭我的服务。 我也阅读了这篇文章 ,告诉我不应该请求所有权限,因为我会打开用户计算机以获取恶意代码。 那么,有没有办法指定我只需要特定的权限( modifyThread ),因此我不需要签署我的jar? 或者我是否必须使用“签署我的jar子并请求一切” – 接近?

Java Access Token PKCS11未找到提供程序

您好我正在尝试从Java中的智能卡访问密钥库。 我正在使用以下代码.. 我正在使用OpenSc http://www.opensc-project.org/opensc的Pkcs11实现 文件windows.cnf = name=dnie library=C:\WINDOWS\system32\opensc-pkcs11.dll Java代码 = String configName = “windows.cnf” String PIN = “####”; Provider p = new sun.security.pkcs11.SunPKCS11(configName); Security.addProvider(p); KeyStore keyStore = KeyStore.getInstance(“PKCS11”, “SunPKCS11-dnie”); =)(= char[] pin = PIN.toCharArray(); keyStore.load(null, pin); 执行时带=)的行(=抛出以下exception java.security.KeyStoreException: PKCS11 not found at java.security.KeyStore.getInstance(KeyStore.java:635) at ObtenerDatos.LeerDatos(ObtenerDatos.java:52) at ObtenerDatos.obtenerNombre(ObtenerDatos.java:19) at main.main(main.java:27) Caused by: java.security.NoSuchAlgorithmException: no such algorithm: […]

如何将BigInteger传递给签名函数

在这里,我正在使用RSA实现数字签名。 我从文件中读取纯文本并获取MD5即纯文本的MessageDigest实例,并将该纯文本转换为BigInteger,此处应签署此bigInteger。 MessageDigest m1 = MessageDigest.getInstance(“MD5”); m1.update(bFile); byte [] digest1 = m1.digest(); for(int i=0; i < digest1.length ; i++){ System.out.println("b["+i+"]="+digest1[i]); } BigInteger bi = new BigInteger(digest1); //这里我不知道如何将BigInteger传递给Signature函数。 有人可以帮帮我吧。

在java中将byte 转换为PrivateKey以进行数字签名

我需要先使用SHA-1摘要算法对String进行数字签名,然后应用RSA算法,使用PrivateKey对其进行签名。 我已经将PrivateKey存储在我的数据库中,作为base64中的数据类型char(250)。 我的问题是我不知道如何将其转换为PrivateKey以使用它进行登录: Cipher cipher = Cipher.getInstance(“RSA”); cipher.init(Cipher.ENCRYPT_MODE, privateKey); byte[] cipherText = cipher.doFinal(digest); Digest是我应用SHA-1摘要算法的字节数组: MessageDigest md = MessageDigest.getInstance(“SHA-1”); byte [] ba = cadena.getBytes(); byte [] digest = md.digest(ba); 这是我想到的解决方案,但如果有人有更好的解决方案我会很感激。

RSA和PublicKey与dotnet互操作

嗨我正在使用此链接中的代码,您能否告诉我为什么签名validation无效? Java签名者正在使用带有SHA1withRSA的BouncyCastleProvider ,这里是dotnetvalidation码…. using System; using System.IO; using System.Collections.Generic; using System.Linq; using System.Text; using System.Security.Cryptography; using System.Security.Cryptography.X509Certificates; using Org.BouncyCastle.Asn1; using Org.BouncyCastle.Crypto; using Org.BouncyCastle.Crypto.Parameters; using Org.BouncyCastle.OpenSsl; using Org.BouncyCastle.Security; using Org.BouncyCastle.Utilities.Encoders; namespace ConsoleApplication1 { class Program { static void Main(string[] args) { string pubkey = @”MFwwDQYJKoZIhvcNAQEBBQADSwAwSAJBAMf54mcK3EYJn9tT9BhRoTX+8AkqojIyeSfog9ncYEye0VXyBULGg2lAQsDRt8lZsvPioORZW7eB6IKawshoWUsCAwEAAQ==”; String signature = “770bb2610bf6b2602ce2b3ad8489054f4ed59c9b0c9299327f76ecbc60a8bb9a725cfae901fc189d4bafcf73a2f4aed8dffe9842f7b6196ddfcd040c7271c7ca”; String signData = “C2:AE:D6:2B:DF:A4”; byte[] expectedSig = […]

在PHP中使用RSA的MD5

我正在尝试在php中实现数字签名,如下面的java示例代码: Signature rsaSig = Signature.getInstance(“MD5withRSA”); RSAPrivateKey clientPrivateKey = readPrivateKeyFromFile(fileName); rsaSig.initSign(clientPrivateKey); String source = msg; byte temp[] = source.getBytes(); rsaSig.update(temp); byte sig[] = rsaSig.sign(); BASE64Encoder encoder = new BASE64Encoder(); return encoder.encode(sig); 我的PHP代码: $rsa = new Crypt_RSA(); $rsa->loadKey(‘…’); // in xml format $plaintext = ‘…’; $rsa->setSignatureMode(CRYPT_RSA_SIGNATURE_PKCS1); $signature = $rsa->sign($plaintext); 但看起来有些东西不见了。 我们应该得到与java代码返回相同的签名。任何人都可以指导我吗?

如何使用PDFBox对动态创建的PDF文档进行数字签名?

对不起! 我在java中很穷。 请在任何我错的地方纠正我,并在我穷人的哪个地方改善! 我正在尝试使用PDFBox使用以下程序对动态创建的pdf进行数字签名: 该计划的任务: (i)创建模板PDF (ii)更新ByteRange,xref,startxref (iii)为签名创建构建原始文件 (iv)创建独立的包络数字签名 (v)通过连接原始文档部分构建数字签名PDF文档 – I,独立签名和原始PDF部分 – II 观察: (i)pdfFileOutputStream.write(documentOutputStream.toByteArray()); 使用Visible Signature创建模板PDF文档。 (ii)它创建一些PDF签名文档但有错误(a)无效令牌和(b)几个解析器错误 (现在在MKL的有力指导下纠正了!) 请建议我以下内容: (i)如何在layer2上的Visible Signature中添加签名文本。 提前致谢! package digitalsignature; import java.awt.geom.AffineTransform; import java.io.ByteArrayInputStream; import java.io.ByteArrayOutputStream; import java.security.Signature; import java.util.ArrayList; import org.bouncycastle.cert.X509CertificateHolder; import org.bouncycastle.cert.jcajce.JcaCertStore; import org.bouncycastle.cms.CMSProcessableByteArray; import org.bouncycastle.cms.CMSTypedData; import org.bouncycastle.cms.SignerInfoGenerator; import org.bouncycastle.cms.SignerInfoGeneratorBuilder; import org.bouncycastle.operator.jcajce.JcaContentSignerBuilder; import org.bouncycastle.operator.jcajce.JcaDigestCalculatorProviderBuilder; import org.bouncycastle.util.Store; import […]

C#SignedCms的Java实现

我正在使用Java实现C#SignedCmsfunction。 我正在使用bouncycastle libs。 问题是我获得的java签名与使用SignedCms生成的签名不同。 C#代码 X509Certificate2 certificate = new X509Certificate2(“myCertPath”, “myPass”); String text = “text”; ContentInfo contentInfo = new ContentInfo(System.Text.Encoding.UTF8.GetBytes(text)); SignedCms cms = new SignedCms(contentInfo, false); CmsSigner signer = new CmsSigner(certificate); signer.IncludeOption = X509IncludeOption.None; signer.DigestAlgorithm = new Oid(“SHA1”); cms.ComputeSignature(signer, false); byte[] signature = cms.Encode(); print(signature); Java代码 Security.addProvider(new BouncyCastleProvider()); char[] password = “myPass”.toCharArray(); String text = […]