这是让C#和PHP交换签名数据的另一个问题。在我的场景中,我在客户端使用公钥进行了签名的C#程序集。我还在服务器上有一个带有私钥的PHP页面。我希望能够使用私钥在PHP中签署一些数据,并在客户端上使用C#中的公钥检查签名。
我已经找到了如何使用sn.exe
(duh)生成公钥/私钥文件。这是
格式我需要.NET来签署程序集等。一旦签名,程序集可以提供公钥作为属性(类似Assembly.GetName().PublicKey
)
另外,我已经想到,我可能想使用openssl_sign()函数为数据创建签名。该示例显示从.pem
文件中读取固定长度的字节。我没有这个文件。
我想.pem
文件只是存储公钥/私钥信息的一种方式,与我可以使用CspBlob
生成的XML和RSACryptoServiceProvider
内容相当。这些格式之间有什么关系?如何将一个转换为另一个?
答案 0 :(得分:1)
要交换安全信息,您应该不使用由sn.exe
生成的私有/公共对,因为它意味着用于签署.NET程序集。假设两种语言都正确地实现了加密算法,您只需要使用相同的密钥(字符串值)和相同的算法。不能那么难=)
请看一下:Generating Keys for Encryption and Decryption,因为它包含有关如何在.NET端使用公钥/私钥的更多信息。