C# 加密-RSA 签名验证
ITPOW2019/12/26 21:31:03
如下代码,MachineCode 是机器码,RegistrationCode 是对机器码签名后的注册码。
先用私钥给机器码签名,生成注册码,然后用公钥校验。其中的属性未补全,实际使用时请补全。
public void Create() { RSACryptoServiceProvider rsa = new RSACryptoServiceProvider(); if (!string.IsNullOrEmpty(PrivateKey)) { // 使用指定私钥 rsa.FromXmlString(PrivateKey); // 输出公钥 PublicKey = rsa.ToXmlString(false); } else { // 使用自动创建的私钥、公钥 PublicKey = rsa.ToXmlString(false); PrivateKey = rsa.ToXmlString(true); } // 签名 byte[] signedData = rsa.SignData(Encoding.UTF8.GetBytes(MachineCode), CryptoConfig.MapNameToOID("SHA256")); RegistrationCode = Convert.ToBase64String(signedData); } public bool Check() { if (string.IsNullOrEmpty(MachineCode) || string.IsNullOrEmpty(PublicKey) || string.IsNullOrEmpty(RegistrationCode)) { return false; } RSACryptoServiceProvider rsa = new RSACryptoServiceProvider(); rsa.FromXmlString(PublicKey); return rsa.VerifyData(Encoding.UTF8.GetBytes(MachineCode), CryptoConfig.MapNameToOID("SHA256"), Convert.FromBase64String(RegistrationCode)); }
<<返回首页<<