using System;
using System.IO;
using System.Text;
using Org.BouncyCastle.Crypto;
using Org.BouncyCastle.OpenSsl;
using Org.BouncyCastle.Security;
using Org.BouncyCastle.X509; namespace security_sandbox
{
class Program
{
static void Main(string[] args)
{ var certificateString = @"-----BEGIN CERTIFICATE-----
MIIB4TCCAYegAwIBAgIUKt0WdaKI2eRXBO2nVk+OF6AZqHMwCgYIKoZIzj0EAwIw
RTELMAkGA1UEBhMCQVUxEzARBgNVBAgMClNvbWUtU3RhdGUxITAfBgNVBAoMGElu
dGVybmV0IFdpZGdpdHMgUHR5IEx0ZDAgFw0yMDA1MDcxMzM2MTNaGA8yMTIwMDQx
MzEzMzYxM1owRTELMAkGA1UEBhMCQVUxEzARBgNVBAgMClNvbWUtU3RhdGUxITAf
BgNVBAoMGEludGVybmV0IFdpZGdpdHMgUHR5IEx0ZDBZMBMGByqGSM49AgEGCCqG
SM49AwEHA0IABO39ccEC+Zv1HDeMy/s7JculdYN/8DXC+U3Qn1rdF351H4NMfkbC
H9bnqwZ4a5oR9HDfaNMX14OQd4VERZV1bhGjUzBRMB0GA1UdDgQWBBRGuUmsyB2h
JCXMRTVMRTcdoWZQaDAfBgNVHSMEGDAWgBRGuUmsyB2hJCXMRTVMRTcdoWZQaDAP
BgNVHRMBAf8EBTADAQH/MAoGCCqGSM49BAMCA0gAMEUCIGG8tQZlh7aJaI34Y7jq
44SmSc/ule9MgjIX+Gg+i5vwAiEA9Jb/304KO4t9OMqFMQeWZXIHdzhDFBwx7FWz
78+UsnY=
-----END CERTIFICATE-----";
var pemreader = new PemReader(new StringReader(certificateString));
var cert = (X509Certificate)pemreader.ReadObject(); // Alternatively, load the public key directly
var pubkeyString =
@"-----BEGIN PUBLIC KEY-----
MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE7f1xwQL5m/UcN4zL+zsly6V1g3/w
NcL5TdCfWt0XfnUfg0x+RsIf1uerBnhrmhH0cN9o0xfXg5B3hURFlXVuEQ==
-----END PUBLIC KEY-----";
pemreader = new PemReader(new StringReader(pubkeyString));
var pubkey = (AsymmetricKeyParameter)pemreader.ReadObject(); var data = "Hello";
var signature = Convert.FromBase64String("MEUCIQD5593C/NBhHA1DILT72gjhGj/lKjom9vYP+JbuypBrxQIgNAjYT1LihEpPbUhe1n9ccUHQvw676bGqOTEU/25qcRQ="); // Verify using the public key
var signer = SignerUtilities.GetSigner("SHA-256withECDSA");
signer.Init(false, pubkey);
signer.BlockUpdate(Encoding.ASCII.GetBytes(data), 0, data.Length);
var success = signer.VerifySignature(signature); if (success) {
Console.WriteLine("Signature verified successfully using public key");
} else {
Console.WriteLine("Failed to verify signature using public key");
} // Verify using the certificate - the certificate's public key is extracted using the GetPublicKey method.
signer.Init(false, cert.GetPublicKey());
signer.BlockUpdate(Encoding.ASCII.GetBytes(data), 0, data.Length);
success = signer.VerifySignature(signature); if (success) {
Console.WriteLine("Signature verified successfully using certificate");
} else {
Console.WriteLine("Failed to verify signature using certificate");
}
}
}
}

最新文章

  1. SQL语句汇总(一)——数据库与表的操作以及创建约束
  2. Jquery-控制table的奇偶数色列
  3. TYVJ 1011 NOIP 2008&&NOIP 2000 传纸条&&方格取数 Label:多线程dp
  4. lightoj 1019
  5. 让 zend studio 识别 Phalcon语法并且进行语法提示
  6. django种表单post出现CSRF verification failed( CSRF验证失败 ) 的两种解决方式
  7. JSON.parse这个是啥?
  8. Eclipse插件的各种安装方法
  9. C#-反射reflection
  10. 【听大佬rqy分享有感】
  11. C# 调用百度地图 Web 服务 API
  12. C#基于wpf编写的串口调试助手
  13. C++加载动态库的顺序
  14. JAVA记录-基础常识
  15. spring事物深入了解
  16. Array.apply(null, {length: 20})和Array(20)的理解
  17. 怎样设置linux中Tab键的宽度(可永久设置)
  18. [AHOI2008]上学路线
  19. 2018-2019-2《网络对抗技术》Exp0 Kali安装 Week1
  20. JS 变量 命名规范 oDiv aDiv 等

热门文章

  1. drf-day8——断点调试、认证.权限.频率的源码分析、基于APIView编写分页、全局异常处理
  2. MySQL 如何实现表的创建、复制、修改与删除
  3. KingbaseES libstdc++.so.6/ version 'CXXABI_1.3.8'问题处理
  4. QuartzNet在winform中使用(目前版本3.6)
  5. 登山(等级考试4级 测试卷 T1)
  6. 普冉PY32系列(四) PY32F002/003/030的时钟设置
  7. Rust 闭包与生命周期
  8. steamdeck使用SSH远程控制
  9. Django中获取用户IP方法
  10. elasticsearch 索引数据手动复制注意事项