TL;DR...如何使用.Net Framework 4.5.2使用PEM私钥文件创建DSA签名
我很抱歉...这对我来说是全新的,因为我从来没有像这样处理过加密.所以请温柔一点!
Details...个
我正在使用一个旧的ASP.NET项目,该项目使用.Net Framework4.5.2...yes, I'm very aware it's out of life, but is not something I can do anything about at this time.
我需要将数据发送到API,其中部分数据(由其他已知数据组成的"签名")使用DSA和客户端提供的私钥进行加密……and yes, I'm very aware that RSA should now be used, but that is what the client is demanding.
私钥已在PEM格式文件中提供(即文件以-----BEGIN DSA PRIVATE KEY-----
开头)
我已经发现了AsnKeyParser class from codeproject.com,但到目前为止,我还没有弄清楚如何将这个类与PEM格式的文件一起使用.
This (purposefully) confusing answer分突出了我的困惑和缺乏理解.
我在调查上浪费了一整天的时间,但没有任何真正的成功,有人能给我一个指点,告诉我如何才能做到这一点吗?
在将Base64解码的证书(在标头之间)传递到AsnKeyParser
类之前,是否需要将其从DER转换为ASN.1?如果是这样的话,是如何做到的呢?
(如果需要,我可以考虑使用更新的.Net版本创建一个外部服务,我可以从4.5.2代码中调用该服务...但更愿意把它包装成一个单一的项目.)
Edit...个
应@Topaco的要求,以下是客户提供的一个示例密钥对,该客户告诉我(有点含糊地)according to Google: DSA Key Size: 2048 bits
...
-----BEGIN DSA PRIVATE KEY-----
MIIBugIBAAKBgQDzGuacD99b5uI/yv8k9B0ayApGge79XN18K3NDals1M/ae31Aa
REiT3pM2Vy+rwZqMXkAjdvBRbAAIWULCPmwlJ25IHBg9zZmK0NymS3qaKd5g3LFC
QXRmOLEVhv0TkZAFmi3u71nvDY35hD5S1OlxXp317MIz8U6/usJhtHjQywIVAKAF
qSaXNbaXLei/kNvHeEMxJvPzAoGAcq8gQ4T1o+xkj7ilhEv1XxiAjKJAZao15JOc
G6D9itSkDTZk/4WftDdIwWV8cYCG6PHmbvGi4i/2Z/LIixnuqWJTUG/EpiXf2RAV
47wgUjGmKtIbpUURSGE+XFfYf5R63hmLp2Jn40NqU9OlAScCDEAqN62YB6+Kua71
/ngDzNACgYBUgc3Gw85Amc2BpFruGsUkB4spnonmueq5HV3bcYIxvrO03UTQovTi
8yvQRUPYSIfCzgS2800ntwizZ6NCwUj6lda6YVBZWw8rg7D9HYoD9aOz4GtN57Da
qml0C3Tqh/1wZI5K+lmyDJfex/nQ4iGQoCmzKftWf13x1iCKM08ULwIUZ8Ig9WT9
Q3BcHfdOKLqa3nbYXCw=
-----END DSA PRIVATE KEY-----
-----BEGIN PUBLIC KEY-----
MIIBtjCCASsGByqGSM44BAEwggEeAoGBAPMa5pwP31vm4j/K/yT0HRrICkaB7v1c
3Xwrc0NqWzUz9p7fUBpESJPekzZXL6vBmoxeQCN28FFsAAhZQsI+bCUnbkgcGD3N
mYrQ3KZLepop3mDcsUJBdGY4sRWG/RORkAWaLe7vWe8NjfmEPlLU6XFenfXswjPx
Tr+6wmG0eNDLAhUAoAWpJpc1tpct6L+Q28d4QzEm8/MCgYByryBDhPWj7GSPuKWE
S/VfGICMokBlqjXkk5wboP2K1KQNNmT/hZ+0N0jBZXxxgIbo8eZu8aLiL/Zn8siL
Ge6pYlNQb8SmJd/ZEBXjvCBSMaYq0hulRRFIYT5cV9h/lHreGYunYmfjQ2pT06UB
JwIMQCo3rZgHr4q5rvX+eAPM0AOBhAACgYBUgc3Gw85Amc2BpFruGsUkB4spnonm
ueq5HV3bcYIxvrO03UTQovTi8yvQRUPYSIfCzgS2800ntwizZ6NCwUj6lda6YVBZ
Ww8rg7D9HYoD9aOz4GtN57Daqml0C3Tqh/1wZI5K+lmyDJfex/nQ4iGQoCmzKftW
f13x1iCKM08ULw==
-----END PUBLIC KEY-----