我目前正在AES/CBC/PKCS5Padding用于加密具有256字节密钥大小的Java文件,但在搜索时我在stackexchange PKCS#5-PKCS#7 Padding上找到了它,并且提到了,
PKCS#5填充是PKCS#7填充的子集,用于8字节块大小
所以我想知道
AES/CBC/PKCS7Padding会更好AES/CBC/PKCS5Padding吗?PKCS#7填充适用于1到255字节的任何块大小.
我的示例代码是,
SecureRandom rnd = new SecureRandom();
IvParameterSpec iv = new IvParameterSpec(rnd.generateSeed(16));
KeyGenerator generator = KeyGenerator.getInstance("AES");
generator.init(256);
SecretKey k = generator.generateKey();
Cipher c = Cipher.getInstance("AES/CBC/PKCS5Padding");
c.init(Cipher.ENCRYPT_MODE, k, iv);
Run Code Online (Sandbox Code Playgroud) 我有app需要从PDF文件上的"附加"数字签名中检索一些数据(签名者名称).
我在Java和C#中只找到了使用iText类AcroFields方法GetSignatureNames的示例
编辑:我用dump_data_fields和generate_fpdf 尝试了pdftk,结果是(不幸的):
/Fields [
<<
/V /dftk.com.lowagie.text.pdf.PdfDictionary@3048918
/T (Signature1)
>>]
Run Code Online (Sandbox Code Playgroud)
和
FieldType: Signature
FieldName: Signature1
FieldFlags: 0
FieldJustification: Left
Run Code Online (Sandbox Code Playgroud)
提前致谢 !
如何使用RSA密钥在iOS上签名和验证某些数据(最好使用系统自己的libcommonCrypto)?
我正在尝试使用128位AES加密(ECB)加密/解密字符串.我想知道的是如何添加/删除PKCS7填充.似乎Mcrypt扩展可以处理加密/解密,但必须手动添加/删除填充.
有任何想法吗?
我有签名的PKCS7消息.它包含数据和签名证书(具有整个信任链).
我有一个代码,它使用m2crypto来获取证书.
bio = BIO.MemoryBuffer(pkcs7message)
p7 = SMIME.PKCS7(m2.pkcs7_read_bio_der(bio._ptr()))
sk = X509.X509_Stack()
certStack = p7.get0_signers(sk)
Run Code Online (Sandbox Code Playgroud)
有用.但是,certStack只返回一个证书(而不是返回整个证书链.
两个问题:
我需要从pkcs7签名文件中提取用户证书.我可以使用以下命令通过命令行执行此操作:
openssl pkcs7 -in somesign.pks7 -inform PEM -print_certs
Run Code Online (Sandbox Code Playgroud)
这将为我提供整个证书链,我可以处理生成的文件以提取我想要的内容.
有没有办法用openssl_pkcs7_命令做到这一点?我看到openssl_pkcs7_verify有$ outfilename,其中将存储证书,但我没有签名的消息,但似乎$ filename应该同时具有签名和消息,这不是我的情况(签名是单独的文件).
我想.exe使用PKCS#7 签署一个文本文件(可能是将来的文件或其他文件)并使用Java验证签名.
.jar和文档)?如果可能,请提供给我的代码段.
我正在尝试使用pdfbox库签署pdf.我现在卡住了,真的需要帮助.
这是我的代码:
private static void signPdf(PDDocument document) throws Exception
{
PDSignature sig = new PDSignature();
sig.setFilter(COSName.ADOBE_PPKLITE);
sig.setSubFilter(COSName.ADBE_PKCS7_DETACHED);
sig.setByteRange(new int[] {'a','a','a','a'});
sig.setContents(new byte[]{(byte) 23, (byte) 23, (byte) 23, (byte) 23});
SignatureOptions options = new SignatureOptions();
document.addSignature(sig, new SignatureInterface() {
public byte[] sign(InputStream content)
throws SignatureException, IOException {
//this should be made MD5 checksum?
return new byte[]{(byte) 'a', (byte) 'a', (byte) 'a', (byte) 'a'};
}
}, options);
}
Run Code Online (Sandbox Code Playgroud)
然后我保存我的pdf,但是:1)我注意到从未调用过sign方法2)我应该在哪里附加certyficate?在签名方法?
PDF格式:
/Type /Sig
/Filter /Adobe.PPKLite
/SubFilter /adbe.pkcs7.sha1
/Contents <0000000000. a lot of zeros..000> …Run Code Online (Sandbox Code Playgroud) 我从第三方系统获得了PKCS#7加密包.该软件包未经过压缩,未加密,PEM编码,使用X.509证书签名.我还有来自提供商的PEM证书文件.
里面的数据是XML
我需要在Node.JS中执行以下操作:
一个示例包(没有敏感信息,数据是指我们的qa系统)http://pastebin.com/7ay7F99e
我正在编写一个SAML 2.0响应解析器来处理ASP.Net中的POST身份验证(在C#和MVC中,但这不太相关).
所以我有一个.p7b要验证的文件,可以读入一个X509Certificate2Collection和一个示例断言 - 一个基本的64位编码的SAML响应.
理想情况下,我想使用内置的WSSecurityTokenSerializer,但失败了,所以我正在寻找一种有效的方法.
我正在直接读取XML:
// get the base 64 encoded SAML
string samlAssertionRaw = GetFromHttpRequest();
// load a new XML document
var assertion = new XmlDocument { PreserveWhitespace = true };
assertion.LoadXml(samlAssertionRaw);
// use a namespace manager to avoid the worst of xpaths
var ns = new XmlNamespaceManager(assertion.NameTable);
ns.AddNamespace("samlp", @"urn:oasis:names:tc:SAML:2.0:protocol");
ns.AddNamespace("saml", @"urn:oasis:names:tc:SAML:2.0:assertion");
ns.AddNamespace("ds", SignedXml.XmlDsigNamespaceUrl);
// get the signature XML node
var signNode = assertion.SelectSingleNode(
"/samlp:Response/saml:Assertion/ds:Signature", ns);
// load the …Run Code Online (Sandbox Code Playgroud)