using System;
using System.IO;
using System.Text;
using System.Collections.Generic;
using System.Security.Cryptography.X509Certificates;
using System.Security.Cryptography; namespace VWFC.IT.CUP.BLL.Common
{
/// <summary>
/// web tools
/// </summary>
public sealed class WebUtils
{
#region Get Private Key
/// <summary>
/// Get Private Key
/// </summary>
/// <param name="path">pfx path</param>
/// <param name="password">Private key password</param>
/// <returns></returns>
static public string GetPrivateKey(string path, string password)
{
try
{
X509Certificate2 cert = new X509Certificate2(path, password, X509KeyStorageFlags.Exportable | X509KeyStorageFlags.PersistKeySet);
return cert.PrivateKey.ToXmlString(true);
}
catch
{
return string.Empty;
}
}
#endregion #region Get Public Key
/// <summary>
/// Get Public Key
/// </summary>
/// <param name="path">pfx path</param>
/// <param name="password">Private key password</param>
/// <returns></returns>
static public string GetPublicKey(string path, string password)
{
try
{
X509Certificate2 cert = new X509Certificate2(path, password, X509KeyStorageFlags.Exportable | X509KeyStorageFlags.PersistKeySet);
return cert.PublicKey.Key.ToXmlString(false);
}
catch
{
return string.Empty;
}
}
#endregion #region Get SHA512 Hash From String
/// <summary>
/// Get SHA512 Hash From String
/// </summary>
/// <param name="originalData"></param>
/// <returns></returns>
static public string GetHash512String(string originalData)
{
string result = string.Empty;
byte[] bytValue = Encoding.UTF8.GetBytes(originalData);
SHA512 sha512 = new SHA512CryptoServiceProvider();
byte[] retVal = sha512.ComputeHash(bytValue);
StringBuilder sb = new StringBuilder();
for (int i = ; i < retVal.Length; i++)
{
sb.Append(retVal[i].ToString("x2"));
}
result = sb.ToString();
return result;
} /// <summary>
/// Get SHA512 Hash From String
/// </summary>
/// <param name="originalData"></param>
/// <returns></returns>
static public string GetSHA512HashFromString2(string originalData)
{
string result = string.Empty;
byte[] buffer = Encoding.UTF8.GetBytes(originalData);
SHA512CryptoServiceProvider SHA512 = new SHA512CryptoServiceProvider();
byte[] h5 = SHA512.ComputeHash(buffer);
result = BitConverter.ToString(h5).Replace("-", string.Empty);
result = result.ToLower();
return result;
}
#endregion #region Get the value of the key from the key file
/// <summary>
/// Get the value of the key from the key file
/// </summary>
/// <param name="type">RSA PRIVATE KEY/RSA PUBLIC KEY</param>
/// <param name="pemUrl">url of the key file</param>
/// <returns>base64 string</returns>
static public string GetKeyFromPem(string type, string pemUrl)
{
string base64 = string.Empty;
try
{
using (FileStream fs = File.OpenRead(pemUrl))
{
byte[] data1 = new byte[fs.Length];
fs.Read(data1, , data1.Length);
string pem = Encoding.UTF8.GetString(data1);
string header = String.Format("-----BEGIN {0}-----\r\n", type);
string footer = String.Format("-----END {0}-----", type);
int start = pem.IndexOf(header) + header.Length;
int end = pem.IndexOf(footer, start);
base64 = pem.Substring(start, (end - start));
}
}
catch { }
return base64;
}
#endregion #region Parse Dictionary #region Dictionary Parse To String
/// <summary>
/// Dictionary Parse To String
/// </summary>
/// <param name="parameters">Dictionary</param>
/// <returns>String</returns>
static public string ParseToString(IDictionary<string, string> parameters)
{
IDictionary<string, string> sortedParams = new SortedDictionary<string, string>(parameters);
IEnumerator<KeyValuePair<string, string>> dem = sortedParams.GetEnumerator(); StringBuilder query = new StringBuilder("");
while (dem.MoveNext())
{
string key = dem.Current.Key;
string value = dem.Current.Value;
if (!string.IsNullOrEmpty(key) && !string.IsNullOrEmpty(value))
{
query.Append(key).Append("=").Append(value).Append("&");
}
}
string content = query.ToString().Substring(, query.Length - ); return content;
}
#endregion #region String Parse To Dictionary
/// <summary>
/// String Parse To Dictionary
/// </summary>
/// <param name="parameter">String</param>
/// <returns>Dictionary</returns>
static public Dictionary<string, string> ParseToDictionary(string parameter)
{
try
{
String[] dataArry = parameter.Split('&');
Dictionary<string, string> dataDic = new Dictionary<string, string>();
for (int i = ; i <= dataArry.Length - ; i++)
{
String dataParm = dataArry[i];
int dIndex = dataParm.IndexOf("=");
if (dIndex != -)
{
String key = dataParm.Substring(, dIndex);
String value = dataParm.Substring(dIndex + , dataParm.Length - dIndex - );
dataDic.Add(key, value);
}
} return dataDic;
}
catch
{
return null;
}
}
#endregion #endregion #region Base64 encryption and decryption /// <summary>
/// 服务器端Base64编码
/// </summary>
/// <param name="data"></param>
/// <returns></returns>
static public string Base64Encode(string data)
{
string result = data;
try
{
byte[] encData_byte = Encoding.UTF8.GetBytes(data);
result = Convert.ToBase64String(encData_byte);
}
catch { } return result;
} /// <summary>
/// 服务器端Base64解码
/// </summary>
/// <param name="data"></param>
/// <returns></returns>
static public string Base64Decode(string data)
{
string result = data;
string decode = string.Empty;
//try
//{
// byte[] bytes = Convert.FromBase64String(result);
// decode = Encoding.UTF8.GetString(bytes);
//}
//catch { }
try
{
UTF8Encoding encoder = new UTF8Encoding();
Decoder utf8Decode = encoder.GetDecoder();
byte[] todecode_byte = Convert.FromBase64String(data);
int charCount = utf8Decode.GetCharCount(todecode_byte, , todecode_byte.Length);
char[] decoded_char = new char[charCount];
utf8Decode.GetChars(todecode_byte, , todecode_byte.Length, decoded_char, );
result = new String(decoded_char);
}
catch { } return result;
} #endregion #region Assign parameters to specified objects /// <summary>
/// Assign parameters to specified objects
/// </summary>
/// <typeparam name="T">object type</typeparam>
/// <param name="dic">Fields/values</param>
/// <returns></returns>
static public T Assign<T>(Dictionary<string, string> dic) where T : new()
{
Type myType = typeof(T);
T entity = new T();
var fields = myType.GetProperties();
string val = string.Empty;
object obj = null; foreach (var field in fields)
{
if (!dic.ContainsKey(field.Name))
continue;
val = dic[field.Name]; object defaultVal;
if (field.PropertyType.Name.Equals("String"))
defaultVal = "";
else if (field.PropertyType.Name.Equals("Boolean"))
{
defaultVal = false;
val = (val.Equals("") || val.Equals("on")).ToString();
}
else if (field.PropertyType.Name.Equals("Decimal"))
defaultVal = 0M;
else
defaultVal = ; if (!field.PropertyType.IsGenericType)
obj = string.IsNullOrEmpty(val) ? defaultVal : Convert.ChangeType(val, field.PropertyType);
else
{
Type genericTypeDefinition = field.PropertyType.GetGenericTypeDefinition();
if (genericTypeDefinition == typeof(Nullable<>))
obj = string.IsNullOrEmpty(val) ? defaultVal : Convert.ChangeType(val, Nullable.GetUnderlyingType(field.PropertyType));
} field.SetValue(entity, obj, null);
} return entity;
} #endregion }
}

调用

            //string publickKeyCer = Path.Combine(baseDirectory, AppConfig.GetPublicKeyCer);
//publicKey = WebUtils.GetKeyFromPem("CERTIFICATE", publickKeyCer); //privateKey = WebUtils.GetPrivateKey(fileKeyUrl, AppConfig.GetPrivateKeyPassword);

C#签名验签帮助类的更多相关文章

  1. Java 签名验签工具类

    public class SignatureUtil { private static final String CHARSET = "UTF-8"; private static ...

  2. RSA签名验签

    import android.util.Base64; import java.security.KeyFactory; import java.security.PrivateKey; import ...

  3. 利用SHA-1算法和RSA秘钥进行签名验签(带注释)

    背景介绍 1.SHA 安全散列算法SHA (Secure Hash Algorithm)是美国国家标准和技术局发布的国家标准FIPS PUB 180-1,一般称为SHA-1.其对长度不超过264二进制 ...

  4. RSA密钥生成、加密解密、签名验签

    RSA 非对称加密公钥加密,私钥解密 私钥签名,公钥验签 下面是生成随机密钥对: //随机生成密钥对 KeyPairGenerator keyPairGen = null; try { keyPair ...

  5. .net 实现签名验签

    本人被要求实现.net的签名验签,还是个.net菜鸡,来分享下采坑过程 依然,签名验签使用的证书格式依然是pem,有关使用openssl将.p12和der转pem的命令请转到php实现签名验签 .ne ...

  6. C# RSACryptoServiceProvider加密解密签名验签和DESCryptoServic

    C#在using System.Security.Cryptography下有 DESCryptoServiceProvider RSACryptoServiceProvider DESCryptoS ...

  7. RSACryptoServiceProvider加密解密签名验签和DESCryptoServiceProvider加解密

    原文:RSACryptoServiceProvider加密解密签名验签和DESCryptoServiceProvider加解密 C#在using System.Security.Cryptograph ...

  8. 数据安全管理:RSA加密算法,签名验签流程详解

    本文源码:GitHub·点这里 || GitEE·点这里 一.RSA算法简介 1.加密解密 RSA加密是一种非对称加密,在公开密钥加密和电子商业中RSA被广泛使用.可以在不直接传递密钥的情况下,完成加 ...

  9. js rsa sign使用笔记(加密,解密,签名,验签)

    你将会收获: js如何加密, 解密 js如何签名, 验签 js和Java交互如何相互解密, 验签(重点) 通过谷歌, 发现jsrsasign库使用者较多. 查看api发现这个库功能很健全. 本文使用方 ...

随机推荐

  1. django报错TypeRError:__init__() missing 1 required positional argument: 'on_delete'

    在添加外键的时候,在括号里添加on_delete=models.CASCADE即可 on_delete=models.CASCADE是级联删除的意思,意思就是说当你更新或删除主键表,那外键表也会跟随一 ...

  2. 使用 Linux Mint 作为主要操作系统的一些个人常用软件

    本篇文章讲一下一些 Linux 上的应用,多数为日常生活娱乐用的软件,同时也会讲一点开发工具,对于有兴趣继续研究 Linux 的可以参考一下. 目录 软件的安装方式 1.Software Manage ...

  3. 如果你的电脑想升级并且支持m.2接口

      便宜啊,赶紧入手.   文章来源:刘俊涛的博客 欢迎关注,有问题一起学习欢迎留言.评论

  4. [转][C#]无法创建虚拟目录。ASP.NET 2.0 尚未在 Web服务器上注册。

    参考:http://www.bubuko.com/infodetail-997666.html C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\aspnet ...

  5. Visual Studio2013的C语言编译器对C99标准的支持情况

    Visual Studio2013终于开始比较良好地支持C99特性了.在此之前,如果用C语言写代码的话,变量名都需要放到函数体的前面部分,代码写起来十分别扭. 而Visual Studio2013中的 ...

  6. VBA 格式化excel数据表 (数据分列)

    Sub ImportData() ' ' Copy Data from one workbook to the Current Workbook ' Place the macro file in t ...

  7. quartz.net 学习

    目录 简介  Quartz是什么?  Quartz的应用场景Quartz的安装  安装  源码Hello World范例API  核心API    Scheduler接口:    Job接口    J ...

  8. MySQL标准化、自动化部署

    机器标准化:服务器的硬件配置(CPU.硬盘.内存.RAID)要保持一致 目录标准化: mysql的安装目录,存放数据的目录.日志文件等,多台机器上配置要统一 参数标准化: 多台服务器上,存放的my.c ...

  9. Linux云服务器磁盘不见了?解决方案在这里,云服务器磁盘挂载

    用过诸多种云以后,发现有个通病,就是新买的数据盘在机器中找不到.本篇总结一下此类问题的解决方法,望各位点赞,有问题评论区见 一.云服务和物理机一样,你买了云服务器的数据盘以后,就相当于把数据盘直接安装 ...

  10. Hystrix-基本概念(设计原则和两种隔离技术)

    一.Hystrix是什么在微服务的架构系统中,每个服务都可能会调用很多其他服务,被调用的那些服务就是依赖服务.有的时候某些依赖服务出现故障也是很正常的.Hystrix可以让我们在对服务间的调用进行控制 ...