非对称加密、解密、验证辅助类 RSASecurityHelper

/// <summary>

/// 非对称加密生成的私钥和公钥

/// </summary>

/// <param name="privateKey">私钥</param>

/// <param name="publicKey">公钥</param>

public static void GenerateRSAKey(out string privateKey, out string publicKey)

#region 非对称数据加密(公钥加密)

/// <summary>

/// 非对称加密字符串数据,返回加密后的数据

/// </summary>

/// <param name="publicKey">公钥</param>

/// <param name="originalString">待加密的字符串</param>

/// <returns>加密后的数据</returns>

public static string RSAEncrypt(string publicKey, string originalString)

/// <summary>

/// 非对称加密字节数组,返回加密后的数据

/// </summary>

/// <param name="publicKey">公钥</param>

/// <param name="originalBytes">待加密的字节数组</param>

/// <returns>返回加密后的数据</returns>

public static string RSAEncrypt(string publicKey, byte[] originalBytes)

#endregion

#region 非对称解密(私钥解密)

/// <summary>

/// 非对称解密字符串,返回解密后的数据

/// </summary>

/// <param name="privateKey">私钥</param>

/// <param name="encryptedString">待解密数据</param>

/// <returns>返回解密后的数据</returns>

public static string RSADecrypt(string privateKey, string encryptedString)

/// <summary>

/// 非对称解密字节数组,返回解密后的数据

/// </summary>

/// <param name="privateKey">私钥</param>

/// <param name="encryptedBytes">待解密数据</param>

/// <returns></returns>

public static string RSADecrypt(string privateKey, byte[] encryptedBytes)

#endregion

#region 非对称加密签名、验证

/// <summary>

/// 使用非对称加密签名数据

/// </summary>

/// <param name="privateKey">私钥</param>

/// <param name="originalString">待加密的字符串</param>

/// <returns>加密后的数据</returns>

public static string RSAEncrypSignature(string privateKey, string originalString)

/// <summary>

/// 对私钥加密签名的字符串,使用公钥对其进行验证

/// </summary>

/// <param name="originalString">未加密的文本,如机器码</param>

/// <param name="encrytedString">加密后的文本,如注册序列号</param>

/// <returns>如果验证成功返回True,否则为False</returns>

public static bool Validate(string originalString, string encrytedString)

/// <summary>

/// 对私钥加密的字符串,使用公钥对其进行验证

/// </summary>

/// <param name="originalString">未加密的文本,如机器码</param>

/// <param name="encrytedString">加密后的文本,如注册序列号</param>

/// <param name="publicKey">非对称加密的公钥</param>

/// <returns>如果验证成功返回True,否则为False</returns>

public static bool Validate(string originalString, string encrytedString, string publicKey)

2

//生成加解密私钥、公钥

string publicKey = "";

string privateKey = "";

RSASecurityHelper.GenerateRSAKey(out privateKey, out publicKey);

string originalString = "testdata";

string encryptedString = RSASecurityHelper.RSAEncrypt(publicKey, originalString);

string originalString2 = RSASecurityHelper.RSADecrypt(privateKey, encryptedString);

if (originalString == originalString2)

{

MessageUtil.ShowTips("解密完全正确");

}

else

{

MessageUtil.ShowWarning("解密失败");

}

string regcode = RSASecurityHelper.RSAEncrypSignature(privateKey, originalString);

bool validated = RSASecurityHelper.Validate(originalString, regcode, publicKey);
MessageUtil.ShowTips( validated ? "验证成功" : "验证失败");

3

/// <summary>

/// 每次程序运行时候,检查用户是否注册

/// </summary>

/// <returns>如果用户已经注册, 那么返回True, 否则为False</returns>

public bool CheckRegister()

{

// 先获取用户的注册码进行比较

string serialNumber = string.Empty; //注册码

RegistryKey reg = Registry.CurrentUser.OpenSubKey(UIConstants.SoftwareRegistryKey, true);

if (null != reg)

{

serialNumber = (string)reg.GetValue("SerialNumber");

Portal.gc.bRegisted = Portal.gc.Register(serialNumber);

}

return Portal.gc.bRegisted;

}

/// <summary>

/// 调用非对称加密方式对序列号进行验证

/// </summary>

/// <param name="serialNumber">正确的序列号</param>

/// <returns>如果成功返回True,否则为False</returns>

public bool Register(String serialNumber)

{

string hardNumber = HardwareInfoHelper.GetCPUId();

return RSASecurityHelper.Validate(hardNumber, serialNumber);

}

public string GetHardNumber()

{

return HardwareInfoHelper.GetCPUId();
}

时间: 2024-10-24 18:19:07

非对称加密、解密、验证辅助类 RSASecurityHelper的相关文章

Java对称与非对称加密解密,AES与RSA

加密技术可以分为对称与非对称两种. 对称加密,解密,即加密与解密用的是同一把秘钥,常用的对称加密技术有DES,AES等 而非对称技术,加密与解密用的是不同的秘钥,常用的非对称加密技术有RSA等 为什么要有非对称加密,解密技术呢 假设这样一种场景A要发送一段消息给B,但是又不想以明文发送,所以就需要对消息进行加密.如果采用对称加密技术,那么加密与解密用的是同一把秘钥.除非B事先就知道A的秘钥,并且保存好.这样才可以解密A发来的消息. 由于对称技术只有一把秘钥,所以秘钥的管理是一个很麻烦的问题.而非

(转)C#实现RSA非对称加密解密

转自:http://blog.csdn.net/u010678947/article/details/48652875 一.RSA简介 RSA公钥加密算法是1977年由Ron Rivest.Adi Shamirh和LenAdleman在(美国麻省理工学院)开发的.RSA取名来自开发他们三者的名字.RSA是目前最有影响力的公钥加密算法,它能够抵抗到目前为止已知的所有密码攻击,已被ISO推荐为公钥数据加密标准.RSA算法基于一个十分简单的数论事实:将两个大素数相乘十分容易,但那时想要对其乘积进行因式

php中rsa加密解密验证

RSA非对称加密,对敏感的数据传输进行数据加密.验证等.测试环境:wamp.aliyun虚拟主机(lamp)一.加密解密的第一步是生成公钥.私钥对,私钥加密的内容能通过公钥解密(反过来亦可以).下载生成公钥.私钥工具openssl. 1.openssl genrsa -out rsa_private_key.pem 1024 2.openssl pkcs8 -topk8 -inform PEM -in rsa_private_key.pem -outform PEM -nocrypt -out

非对称加密解密与签名验签的关系

首先看一下各自的定义: 加密:发送方利用接收方的公钥对要发送的明文进行加密. 解密:接受方利用自己的私钥进行解密. 签名:发送方用一个哈希函数从报文文本中生成报文摘要,然后用自己的私人密钥对这个摘要进行加密,得到的就是这个报文对应的数字签名.通常来说,发送方会把数字签名和报文原文一并发送给接受者. 验签:接收方得到原始报文和数字签名后,用同一个哈希函数从报文中生成摘要A,另外,用发送方提供的公钥对数字签名进行解密,得到摘要B,对比A和B是否相同,就可以得知报文有没有被篡改过. 两者的目的不同,加

php 非对称加密解密类

<?phpheader("Content-Type: text/html;charset=utf-8");// 让敲代码成为一种 ___"时尚" // 让敲代码成为一种 ___"时尚" //// .::::.// .::::::::.// :::::::::::// ..:::::::::::'// '::::::::::::'// .::::::::::// '::::::::::::::..// ..::::::::::::.// ``

DES非对称加密解密跨平台(C#,安卓,ios)

#region 跨平台加解密(c# 安卓 IOS) public static string sKey = "123456"; /// <summary> /// 解密 /// </summary> /// <param name="pToDecrypt">要解密的以Base64</param> /// <param name="sKey">密钥,且必须为8位</param>

RSA不限长度非对称加密解密C#

RSA 分段加解密[解决“不正确的长度”的异常] RSA 是常用的非对称加密算法.最近使用时却出现了“不正确的长度”的异常,研究发现是由于待加密的数据超长所致. .NET Framework 中提供的 RSA 算法规定: 待加密的字节数不能超过密钥的长度值除以 8 再减去 11(即:RSACryptoServiceProvider.KeySize / 8 - 11),而加密后得到密文的字节数,正好是密钥的长度值除以 8(即:RSACryptoServiceProvider.KeySize / 8

ios php RSA 非对称加密解密 der 和pem生成

ios 使用public_key.der加密 php 使用 private_key.pem解密 openssl req -x509 -out public_key.der -outform der -new -newkey rsa:1024 -keyout private_key.pem phrase: countryName : CNStateName:ZhejiangCityName: organizationName: organizational Unit Name: CommonNam

RSA非对称加密解密实例

String content = ""; for(int i=1;i<100;i++)content += i + ") Easy to say, hard to do.\n"; /*1.利用公钥加密至文件*/ {     /*1)根据公钥反向构造PublickKey对象,调用cipher的init方法时使用*/     String KEY_PUBLIC  = "MFwwDQYJKoZIhvcNAQEBBQADSwAwSAJBAIv38xXk06A