繁体   English   中英

如何使用p7b和p12证书

[英]how to use p7b and p12 certificates

您好,我的目标是加密zipfile的密码。 到目前为止,我只需要生成一个SHA Hash作为我的密码,并使用带有我的RSA-Cryptoprovider私钥来加密密码。

现在,我需要使用.p7b.p12证书来执行此任务。 但经过一番研究后,我发现.p12可能是我用来加密密码的文件,但是我不知道我需要那些文件。我需要.p7b做什么?

到目前为止,这就是我所做的事情,它似乎可以工作,因为我可以读取字符串,但仍然需要我的.p7b文件做什么?

var password = @"test";
var p12FilePath = @"key\Test.p12";
var text = @"myFutureZipPassword";

X509Certificate2 cert = new X509Certificate2(p12FilePath, password, X509KeyStorageFlags.PersistKeySet | X509KeyStorageFlags.Exportable);
byte[] certData = cert.Export(X509ContentType.Pfx, password);
RSACryptoServiceProvider rsaKey = (RSACryptoServiceProvider)cert.PrivateKey;

SHA1Managed sha1 = new SHA1Managed();
UnicodeEncoding encoding = new UnicodeEncoding();
byte[] data = encoding.GetBytes(text);
byte[] hash = sha1.ComputeHash(data);
var sign = rsaKey.SignHash(hash, CryptoConfig.MapNameToOID("SHA1"));


var str = System.Text.Encoding.Default.GetString(sign);

p12 - PKCS#12 密钥/证书存储的扩展名.p7b - PKCS#7 二进制加密消息语法的扩展名都不证书。

PKCS#12可用于存储多个私钥/证书链(要求签名或解密)或仅存储受信任的证书(用于验证或加密)。 其他信息也可以存储,但是对于您的分配,您应该仅将其用作密钥/证书存储。

PKCS#7标准指定了加密消息语法或CMS。 它指定了一种容器格式 ,可用于指定签名或封装(读取:加密)的消息/文件。 RSA本身可以加密小文件,而PKCS#7则允许您使用指定格式的混合加密

容器格式指示并可能包含用于执行加密的证书,因此您可以选择要使用的密钥。 它还指定用于执行加密的算法。 要使用它,您需要一个比RSACryptoServiceProvider更高级的API; 它在.NET框架内的PKCS命名空间中提供(以EnvelopedCms开头)。 PKCS代表公钥密码标准,该标准首先由RSA Labs创建,然后复制并在RFC中继续使用。

PKCS#12和PKCS#7的结构已用一种语言定义,该语言定义了称为ASN.1的数据结构。 然后使用称为BER / DER的二进制编码格式对结构进行编码。 但是,为确保消息在基于文本的界面上正确传输,PKCS#7文件通常使用PEM文本编码进行ASCII防护,这基本上只是几行标题/页脚行,其间以base 64编码为二进制。 文件名中的b表示不应执行PEM编码。

请注意,有时PKCS#7 / CMS也用于简单地存储证书,该证书可用于加密,因为您只需要公钥即可。 但是,为此使用PKCS#12会更好。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM