.net用BouncyCastle进行签名&加解密
来源:互联网 发布:淘宝怎么分享不了 编辑:程序博客网 时间:2024/05/17 01:31
http://www.bouncycastle.org/csharp/index.html
下载bin的zip文件。
工程添加引用“BouncyCastle.Crypto.dll”
代码添加引用:
using Org.BouncyCastle.Pkcs;
using Org.BouncyCastle.X509;
using Org.BouncyCastle.Crypto;
using Org.BouncyCastle.Security;
using Org.BouncyCastle.Crypto.Parameters;
签名&读证书序列号:
FileStream fileStream = null; try { fileStream = new FileStream(certPath, FileMode.Open); Pkcs12Store store = new Pkcs12Store(fileStream, certPwd.ToCharArray()); string pName = null; foreach (string n in store.Aliases) { if (store.IsKeyEntry(n)) { pName = n; //break; } } Cert signCert = new Cert(); AsymmetricKeyParameter key = store.GetKey(pName).Key; X509CertificateEntry[] chain = store.GetCertificateChain(pName); X509Certificate cert = chain[0].Certificate; string certId = cert.SerialNumber.ToString(); //证书序列号 ISigner normalSig = SignerUtilities.GetSigner("SHA1WithRSA"); normalSig.Init(true, key); normalSig.BlockUpdate(data, 0, data.Length); byte[] normalResult = normalSig.GenerateSignature(); //签名结果 } finally { if (fileStream != null) fileStream.Close(); }
验签&读证书序列号:
FileStream fileStream = null; try { fileStream = new FileStream(file.DirectoryName + "\\" + file.Name, FileMode.Open); X509Certificate certificate = new X509CertificateParser().ReadCertificate(fileStream); string certId = certificate.SerialNumber.ToString(); //证书序列号 AsymmetricKeyParameter key = certificate.GetPublicKey(); ISigner verifier = SignerUtilities.GetSigner("SHA1WithRSA"); verifier.Init(false, key); verifier.BlockUpdate(srcByte, 0, srcByte.Length); return verifier.VerifySignature(signature); //验签结果 } finally { if(fileStream != null) fileStream.Close(); }
加密:
FileStream fileStream = null; try { fileStream = new FileStream(file.DirectoryName + "\\" + file.Name, FileMode.Open); X509Certificate certificate = new X509CertificateParser().ReadCertificate(fileStream); string certId = certificate.SerialNumber.ToString(); //证书序列号 AsymmetricKeyParameter key = certificate.GetPublicKey(); IBufferedCipher c = CipherUtilities.GetCipher("RSA/NONE/PKCS1Padding"); c.Init(true, new ParametersWithRandom(key, new SecureRandom())); return c.DoFinal(dataToBeEnc); //加密结果 } finally { if(fileStream != null) fileStream.Close(); }
0 0
- .net用BouncyCastle进行签名&加解密
- 利用Java6和BouncyCastle对文件进行加解密
- C# 引用Org.BouncyCastle.Crypto 签名&解密
- 加解密 签名
- RES 签名/加解密
- openssl c++实现bouncycastle中AES加解密
- 编码,加解密,签名,Hash
- RSA加解密与签名
- gpg加解密及签名
- 用MD5对文件进行加解密
- 用异或进行加解密
- 用java语言进行RSA加解密
- WebSphere下使用CA证书进行签名和加解密的方法
- .NET 加/解密
- BouncyCastle签名认证机制
- 常见加解密及签名算法
- RSA加解密及签名使用介绍
- 加解密、签名基础理解二
- Java 计算器实现
- 暑假不想学习...喝碗鸡汤找点动力
- abiFilters
- Palindromes
- 时间格式类型互转之 字符串、日历、时间数据
- .net用BouncyCastle进行签名&加解密
- 加密与签名
- table合并单元格colspan和rowspan
- javax.mail.AuthenticationFailedException: 535 Error: authentication failed的解决办法
- Curl de 详细介绍
- 《B/S之学习开始》
- Java 回调函数(传统方法和lambda方法)-一个例子秒懂
- _mysql.c(42) : fatal error C1083: Cannot open include file: 'config-win.h':问题的解决
- dinic模板