.net用BouncyCastle进行签名&加解密_.net bouncycastle-程序员宅基地



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();
                }




版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/pridas/article/details/51934157

智能推荐

vue运行报错Extra space after key template-程序员宅基地

文章浏览阅读5.4k次,点赞4次,收藏2次。刚开始学习vue,跟着教程一步一步的自己敲代码,发现了如下错误:Extra space after key ‘template’其实错误中已经给出提示key-spacing,一开始并未注意,经多番尝试,发现template后面多了一个空格本人初学菜鸟,不知道为何校验如此沿革,冒号前不能有空格,冒号后必须有空格,待日后深入研究!..._extra space after key

Maxwell:异构数据源实时同步工具_maxwell oracle-程序员宅基地

文章浏览阅读4.2k次。Maxwell:异构数据源实时同步工具文章目录Maxwell:异构数据源实时同步工具1、概述2、原理解析2.1 Mysql主从复制3、Maxwell安装部署4、增量数据同步5、历史数据全量同步5.1 Maxwell-bootstrap1、概述​ Maxwell:实时监控Mysql数据库的数据变更操作(包括insert、update、delete),并将变更数据以 JSON 格式发送给 Kafka、Kinesi等流数据处理平台。​ Maxwell的工作原理是实时读取MySQL数据库的二进制日志(B_maxwell oracle

ThingsBoard是什么?_thingsboard是干嘛的-程序员宅基地

文章浏览阅读1k次。ThingsBoard是一个开源物联网平台,可实现物联网项目的快速开发、管理和扩展,你可以在任何地方进行部署并且对个人和商业用户均可以免费使用。_thingsboard是干嘛的

VS2017下dll和lib的使用_vsllb-程序员宅基地

文章浏览阅读3.8k次。前言最近开始认真掌握VS的各种操作,自然而然避不开dll和lib的使用,自己逛了逛CSDN和博客园,看了很多博客,但是并不是很让我满意,一方面是大多不符合我的环境(VS2017 Community),另一方面是太他妈复杂了,什么建成后又各种添加什么的,实在记不熟,所以以下是我的操作。说明如下:环境:VS2017 Community操作:同一个结局解决方案下一个exe项目,一个dll项目,一..._vsllb

MSYS2 更换国内源_msys2 mingw 64-bit替换源-程序员宅基地

文章浏览阅读1.6k次,点赞5次,收藏4次。文章目录MSYS2 更换国内源MSYS2 更换国内源使用默认的 MSYS2 源升级软件或是安装新软件的特别的慢。所以就翻了翻国内的几个开源软件的镜像库,发现中科大的库里就有 MSYS2。所以就研究了一下,给 MSYS2 添加了中科大的源。简单的说 msys64\etc\pacman.d 目录下有三个文件。mirrorlist.msysmirrorlist.mingw64mirrorlist.mingw32这三个文件记录了都有哪些源。下面把我添加之后的文件内容贴上来。首先是 mirrorlis_msys2 mingw 64-bit替换源

Stm8 串口重定向及问题解决_error[li009]: runtime model conflict: module xxexi-程序员宅基地

文章浏览阅读1.4k次。一,代码及其设置#include <stdio.h>int fputc(int ch, FILE *f)//Stm8005 重定向{ while (!(UART2->SR&0x80)); UART2->DR=ch; return ch;}同时需要修改IAR的Projec t- >Options -> General..._error[li009]: runtime model conflict: module xxexit.o(dbgstm8smn.a) specifie

随便推点

Android studio笔记:工程介绍和控件(Toolbar)_androidx.appcompat.widget.toolbar-程序员宅基地

文章浏览阅读418次。app:navigationIcon是用来设置图标,我们一般是弄一个返回箭头。DarkActionBar我们一般修改为NoActionBar,自己设置。android:gravity="center"这个是设置不了的,要用。为什么我们要用toolbar就是因为我们可以能灵活的使用。也可以通过java的方式设置。_androidx.appcompat.widget.toolbar

python猜随机数游戏-程序员宅基地

文章浏览阅读3.8k次,点赞2次,收藏3次。利用python写的猜随机数游戏_python猜随机数

office打开文件提示“启用编辑”_word打开每次都要点启用编辑-程序员宅基地

文章浏览阅读8.2k次。不想word、excel一打开网络文件、不安全位置的文件、Outlook附件就提示“启用编辑”,只需将如下位置的勾选去掉即可!_word打开每次都要点启用编辑

mysql写入代码_MYSQL批量插入数据的实现代码第1/3页-程序员宅基地

文章浏览阅读86次。@echo offclsset CLASSPATH=..\api\jogre.jarset CLASSPATH=%CLASSPATH%;.set CLASSPATH=%CLASSPATH%;classesset CLASSPATH=%CLASSPATH%;lib\dom4j.jarjava org.jogre.server.JogreServer建表create database con_test..._mysql批量写入记录的代码

(Python数字图像处理)自适应中值滤波算法_图像滤波 椒盐噪声 自适应中值滤波-程序员宅基地

文章浏览阅读5.7k次,点赞21次,收藏55次。文章目录一、实现方法二、代码运行结果一、实现方法自适应中值滤波算法有两个处理层次:**层次A:**若zmin<zmed<zmax,则转移到层次B;否则,增Sxy尺 寸,若Sxy<Smax,则重复层次A;否则,输出zmed。**层次B:**若zmin<zxy<zmax,则输出zxy;否则,输出zmed。既然是中值滤波,那处理椒盐这类冲激噪声肯定比较合适,自适应中值滤波能在有效去除冲激噪声的基础上,平滑其他非冲激噪声,减少失真,保留图像细节,而对于同等大小的中_图像滤波 椒盐噪声 自适应中值滤波

统一过程模型(RUP/UP)-程序员宅基地

文章浏览阅读3.5k次。统一过程(RUP/UP,Rational Unified Process)是一种以用例驱动、以体系结构为核心、迭代及增量的软件过程模型,由UML方法和工具支持,广泛应用于各类面向对象项目。RUP是由Rational公司开发并维护,和一系列软件开发工具紧密集成。RUP蕴含了大量优秀的实践方法,如:迭代式软件开发、需求管理、基于构件的构架应用、建立可视化的软件模型、软件质量验证、软件变更控制等。..._统一过程模型

推荐文章

热门文章

相关标签