C#中的常见加密解密类-创新互联
今天小编就为大家带来一篇C#中的常见加密解密类的文章。小编觉得挺不错的,为此分享给大家做个参考。一起跟随小编过来看看吧。
创新互联是一家集网站建设,安泽企业网站建设,安泽品牌网站建设,网站定制,安泽网站建设报价,网络营销,网络优化,安泽网站推广为一体的创新建站企业,帮助传统企业提升企业形象加强企业竞争力。可充分满足这一群体相比中小企业更为丰富、高端、多元的互联网需求。同时我们时刻保持专业、时尚、前沿,时刻以成就客户成长自我,坚持不断学习、思考、沉淀、净化自己,让我们为更多的企业打造出实用型网站。常见的加密方式分为可逆和不可逆两种方式
可逆:RSA,AES,DES等
不可逆:常见的MD5,SHAD等
常见的加密方式封装到一个Password类中
public class Password { ////// 此代码示例通过创建哈希字符串适用于任何 MD5 哈希函数 (在任何平台) 上创建 32 个字符的十六进制格式哈希字符串 /// 官网案例改编 /// /// ///public static string Get32MD5One(string source) { using (System.Security.Cryptography.MD5 md5Hash = System.Security.Cryptography.MD5.Create()) { byte[] data = md5Hash.ComputeHash(System.Text.Encoding.UTF8.GetBytes(source)); System.Text.StringBuilder sBuilder = new System.Text.StringBuilder(); for (int i = 0; i < data.Length; i++) { sBuilder.Append(data[i].ToString("x2")); } string hash = sBuilder.ToString(); return hash.ToUpper(); } } /// /// 获取16位md5加密 /// /// ///public static string Get16MD5One(string source) { using (System.Security.Cryptography.MD5 md5Hash = System.Security.Cryptography.MD5.Create()) { byte[] data = md5Hash.ComputeHash(System.Text.Encoding.UTF8.GetBytes(source)); //转换成字符串,并取9到25位 string sBuilder = BitConverter.ToString(data, 4, 8); //BitConverter转换出来的字符串会在每个字符中间产生一个分隔符,需要去除掉 sBuilder = sBuilder.Replace("-", ""); return sBuilder.ToString().ToUpper(); } } //// /// /// 需要加密的明文 ///返回32位加密结果,该结果取32位加密结果的第9位到25位 public static string Get32MD5Two(string source) { System.Security.Cryptography.MD5 md5 = new System.Security.Cryptography.MD5CryptoServiceProvider(); //获取密文字节数组 byte[] bytResult = md5.ComputeHash(System.Text.Encoding.Default.GetBytes(source)); //转换成字符串,32位 string strResult = BitConverter.ToString(bytResult); //BitConverter转换出来的字符串会在每个字符中间产生一个分隔符,需要去除掉 strResult = strResult.Replace("-", ""); return strResult.ToUpper(); } /////// /// 需要加密的明文 ///返回16位加密结果,该结果取32位加密结果的第9位到25位 public static string Get16MD5Two(string source) { System.Security.Cryptography.MD5 md5 = new System.Security.Cryptography.MD5CryptoServiceProvider(); //获取密文字节数组 byte[] bytResult = md5.ComputeHash(System.Text.Encoding.Default.GetBytes(source)); //转换成字符串,并取9到25位 string strResult = BitConverter.ToString(bytResult, 4, 8); //BitConverter转换出来的字符串会在每个字符中间产生一个分隔符,需要去除掉 strResult = strResult.Replace("-", ""); return strResult.ToUpper(); } //SHA为不可逆加密方式 public static string SHA1Encrypt(string normalTxt) { var bytes = System.Text.Encoding.Default.GetBytes(normalTxt); var SHA = new System.Security.Cryptography.SHA1CryptoServiceProvider(); var encryptbytes = SHA.ComputeHash(bytes); return Convert.ToBase64String(encryptbytes); } public static string SHA256Encrypt(string normalTxt) { var bytes = System.Text.Encoding.Default.GetBytes(normalTxt); var SHA256 = new System.Security.Cryptography.SHA256CryptoServiceProvider(); var encryptbytes = SHA256.ComputeHash(bytes); return Convert.ToBase64String(encryptbytes); } public static string SHA384Encrypt(string normalTxt) { var bytes = System.Text.Encoding.Default.GetBytes(normalTxt); var SHA384 = new System.Security.Cryptography.SHA384CryptoServiceProvider(); var encryptbytes = SHA384.ComputeHash(bytes); return Convert.ToBase64String(encryptbytes); } public string SHA512Encrypt(string normalTxt) { var bytes = System.Text.Encoding.Default.GetBytes(normalTxt); var SHA512 = new System.Security.Cryptography.SHA512CryptoServiceProvider(); var encryptbytes = SHA512.ComputeHash(bytes); return Convert.ToBase64String(encryptbytes); } ////// 将base64格式,转换utf8 /// /// 解密内容 ///public static string Base64Decode(string content) { byte[] bytes = Convert.FromBase64String(content); return System.Text.Encoding.UTF8.GetString(bytes); } /// /// DES加密数据 /// /// /// ///public static string DESEncryption(string Text, string sKey=null) { sKey = sKey ?? "zhiqiang"; try { System.Security.Cryptography.DESCryptoServiceProvider des = new System.Security.Cryptography.DESCryptoServiceProvider(); byte[] inputByteArray; inputByteArray = System.Text.Encoding.Default.GetBytes(Text); string md5SKey = Get32MD5One(sKey).Substring(0, 8); des.Key = System.Text.ASCIIEncoding.ASCII.GetBytes(md5SKey); des.IV = System.Text.ASCIIEncoding.ASCII.GetBytes(md5SKey); System.IO.MemoryStream ms = new System.IO.MemoryStream(); System.Security.Cryptography.CryptoStream cs = new System.Security.Cryptography.CryptoStream(ms, des.CreateEncryptor(), System.Security.Cryptography.CryptoStreamMode.Write); cs.Write(inputByteArray, 0, inputByteArray.Length); cs.FlushFinalBlock(); System.Text.StringBuilder ret = new System.Text.StringBuilder(); foreach (byte b in ms.ToArray()) { ret.AppendFormat("{0:X2}", b); } return ret.ToString(); }catch { return "error"; } } /// /// DES解密数据 /// /// /// ///public static string DESDecrypt(string Text, string sKey=null) { sKey = sKey ?? "zhiqiang"; try { System.Security.Cryptography.DESCryptoServiceProvider des = new System.Security.Cryptography.DESCryptoServiceProvider(); int len; len = Text.Length / 2; byte[] inputByteArray = new byte[len]; int x, i; for (x = 0; x < len; x++) { i = Convert.ToInt32(Text.Substring(x * 2, 2), 16); inputByteArray[x] = (byte)i; } string md5SKey = Get32MD5One(sKey).Substring(0, 8); des.Key = System.Text.ASCIIEncoding.ASCII.GetBytes(md5SKey); des.IV = System.Text.ASCIIEncoding.ASCII.GetBytes(md5SKey); System.IO.MemoryStream ms = new System.IO.MemoryStream(); System.Security.Cryptography.CryptoStream cs = new System.Security.Cryptography.CryptoStream(ms, des.CreateDecryptor(), System.Security.Cryptography.CryptoStreamMode.Write); cs.Write(inputByteArray, 0, inputByteArray.Length); cs.FlushFinalBlock(); return System.Text.Encoding.Default.GetString(ms.ToArray()); }catch { return "error"; } } /// /// RSA加密数据 /// /// /// ///public static string RSAEncryption(string express, string KeyContainerName = null) { System.Security.Cryptography.CspParameters param = new System.Security.Cryptography.CspParameters(); param.KeyContainerName = KeyContainerName ?? "zhiqiang"; //密匙容器的名称,保持加密解密一致才能解密成功 using (System.Security.Cryptography.RSACryptoServiceProvider rsa = new System.Security.Cryptography.RSACryptoServiceProvider(param)) { byte[] plaindata = System.Text.Encoding.Default.GetBytes(express);//将要加密的字符串转换为字节数组 byte[] encryptdata = rsa.Encrypt(plaindata, false);//将加密后的字节数据转换为新的加密字节数组 return Convert.ToBase64String(encryptdata);//将加密后的字节数组转换为字符串 } } /// /// RSA解密数据 /// /// /// ///public static string RSADecrypt(string ciphertext, string KeyContainerName = null) { System.Security.Cryptography.CspParameters param = new System.Security.Cryptography.CspParameters(); param.KeyContainerName = KeyContainerName ?? "zhiqiang"; using (System.Security.Cryptography.RSACryptoServiceProvider rsa = new System.Security.Cryptography.RSACryptoServiceProvider(param)) { byte[] encryptdata = Convert.FromBase64String(ciphertext); byte[] decryptdata = rsa.Decrypt(encryptdata, false); return System.Text.Encoding.Default.GetString(decryptdata); } } }
以上就是C#中的常见加密解密类的具体内容,代码详细清楚,如果在日常工作遇到这个问题,希望你能通过这篇文章解决问题。如果想了解更多相关内容,欢迎关注创新互联网站制作公司行业资讯频道!
创新互联www.cdcxhl.cn,专业提供香港、美国云服务器,动态BGP最优骨干路由自动选择,持续稳定高效的网络助力业务部署。公司持有工信部办法的idc、isp许可证, 机房独有T级流量清洗系统配攻击溯源,准确进行流量调度,确保服务器高可用性。佳节活动现已开启,新人活动云服务器买多久送多久。
文章标题:C#中的常见加密解密类-创新互联
分享网址:http://azwzsj.com/article/cepiip.html