zoukankan      html  css  js  c++  java
  • C# 转换函数

    using System;
    using System.Collections.Generic;
    using System.Text;
    using Microsoft.Win32; //对注册表操作
    using System.Collections; //使用Arraylist
    using System.Security.Cryptography;//加密解密
    using System.IO; //文件操作
    using System.Runtime.InteropServices;//调用DLL DllImport
    using System.Management; //获取硬件信息
    using System.Net; //获取IP地址是用到
    using System.Drawing; //image
    using System.Net.NetworkInformation; //ping 用到
    using System.Text.RegularExpressions; //正则
    using System.Data;
    using System.Data.SqlClient;
    using Microsoft.VisualBasic; //简体转繁体时用到
    using System.Web; //html UrlEncode


    //注册表操作
    public class GF_RegReadWrite
    {

    /// <summary>
    /// 读取路径为keypath,键名为keyname的注册表键值,缺省返回def
    /// </summary>
    /// <param name="rootkey"></param>
    /// <param name="keypath">路径</param>
    /// <param name="keyname">键名</param>
    /// <param name="rtn">默认为null</param>
    /// <returns></returns>
    static public bool GetRegVal(RegistryKey rootkey, string keypath, string keyname, out string rtn)
    {
    rtn
    = "";
    try
    {
    RegistryKey key
    = rootkey.OpenSubKey(keypath);
    rtn
    = key.GetValue(keyname).ToString();
    key.Close();
    return true;
    }
    catch
    {
    return false;
    }
    }

    /// <summary>
    /// 设置路径为keypath,键名为keyname的注册表键值为keyval
    /// </summary>
    /// <param name="rootkey"></param>
    /// <param name="keypath"></param>
    /// <param name="keyname"></param>
    /// <param name="keyval"></param>
    /// <returns></returns>
    static public bool SetRegVal(RegistryKey rootkey, string keypath, string keyname, string keyval)
    {
    try
    {
    RegistryKey key
    = rootkey.OpenSubKey(keypath, true);
    if (key == null)
    key
    = rootkey.CreateSubKey(keypath);
    key.SetValue(keyname, (
    object)keyval);
    key.Close();
    return true;
    }
    catch
    {
    return false;
    }
    }

    /// 创建路径为keypath的键
    private RegistryKey CreateRegKey(RegistryKey rootkey, string keypath)
    {
    try
    {
    return rootkey.CreateSubKey(keypath);
    }
    catch
    {
    return null;
    }
    }
    /// 删除路径为keypath的子项
    private bool DelRegSubKey(RegistryKey rootkey, string keypath)
    {
    try
    {
    rootkey.DeleteSubKey(keypath);
    return true;
    }
    catch
    {
    return false;
    }
    }
    /// 删除路径为keypath的子项及其附属子项
    private bool DelRegSubKeyTree(RegistryKey rootkey, string keypath)
    {
    try
    {
    rootkey.DeleteSubKeyTree(keypath);
    return true;
    }
    catch
    {
    return false;
    }
    }
    /// 删除路径为keypath下键名为keyname的键值
    private bool DelRegKeyVal(RegistryKey rootkey, string keypath, string keyname)
    {
    try
    {
    RegistryKey key
    = rootkey.OpenSubKey(keypath, true);
    key.DeleteValue(keyname);
    return true;
    }
    catch
    {
    return false;
    }
    }
    }
    //类型转换
    public class GF_Convert
    {
    /// <summary>
    /// 字符串 转换 char数组
    /// </summary>
    /// <param name="in_str"></param>
    /// <param name="in_len"></param>
    /// <returns></returns>
    public static char[] string2chararray(string in_str, int in_len)
    {
    char[] ch = new char[in_len];
    in_str.ToCharArray().CopyTo(ch,
    0);
    return ch;
    }

    /// <summary>
    /// char数组 转换 字符串
    /// </summary>
    /// <param name="in_str"></param>
    /// <returns></returns>
    public static string chararray2string(char[] in_str)
    {
    string out_str;
    out_str
    = new string(in_str);
    int i = out_str.IndexOf('\0', 0);
    if (i == -1)
    i
    = 16;
    return out_str.Substring(0, i);
    }

    /// <summary>
    /// byte数组 转换 字符串
    /// </summary>
    /// <param name="in_str"></param>
    /// <returns></returns>
    public static string bytearray2string(byte[] in_str)
    {
    string out_str;
    out_str
    = System.Text.Encoding.Default.GetString(in_str);
    return out_str.Substring(0, out_str.IndexOf('\0', 0));

    }

    /// <summary>
    /// 字符串 转换 byte数组 注意转换出来会使原来的bytearray长度变短
    /// </summary>
    /// <param name="in_str"></param>
    /// <returns></returns>
    public static byte[] string2bytearray(string in_str)
    {
    return System.Text.Encoding.Default.GetBytes(in_str);
    }

    /// <summary>
    /// 字符串 转换 byte数组 长度为传如的长度
    /// </summary>
    /// <param name="in_str">传入字符串</param>
    /// <param name="iLen">目标字节数组长度</param>
    /// <returns></returns>
    public static byte[] string2bytearray(string in_str, int iLen)
    {
    byte[] bytes = new byte[iLen];
    byte[] bsources=System.Text.Encoding.Default.GetBytes(in_str);
    Array.Copy(bsources, bytes, bsources.Length);


    return bytes;
    }

    /// <summary>
    /// 将字符串编码为Base64字符串
    /// </summary>
    /// <param name="str"></param>
    /// <returns></returns>
    public static string Base64Encode(string str)
    {
    byte[] barray;
    barray
    = Encoding.Default.GetBytes(str);
    return Convert.ToBase64String(barray);
    }

    /// <summary>
    /// 将Base64字符串解码为普通字符串
    /// </summary>
    /// <param name="str"></param>
    /// <returns></returns>
    public static string Base64Decode(string str)
    {
    byte[] barray;
    try
    {
    barray
    = Convert.FromBase64String(str);
    return Encoding.Default.GetString(barray);
    }
    catch
    {
    return str;
    }
    }

    /// <summary>
    /// 图片 转换 byte数组
    /// </summary>
    /// <param name="pic"></param>
    /// <param name="fmt"></param>
    /// <returns></returns>
    public static byte[] image_Image2Byte(Image pic, System.Drawing.Imaging.ImageFormat fmt)
    {
    MemoryStream mem
    = new MemoryStream();
    pic.Save(mem, fmt);
    mem.Flush();
    return mem.ToArray();
    }
    /// <summary>
    /// byte数组 转换 图片
    /// </summary>
    /// <param name="bytes"></param>
    /// <returns></returns>
    public static Image image_Byte2Image(byte[] bytes)
    {
    MemoryStream mem
    = new MemoryStream(bytes, true);
    mem.Read(bytes,
    0, bytes.Length);
    mem.Flush();
    Image aa
    = Image.FromStream(mem);
    return aa;
    }

    /// <summary>
    /// ip 转换 长整形
    /// </summary>
    /// <param name="strIP"></param>
    /// <returns></returns>
    public static long IP2Long(string strIP)
    {

    long[] ip = new long[4];

    string[] s = strIP.Split('.');
    ip[
    0] = long.Parse(s[0]);
    ip[
    1] = long.Parse(s[1]);
    ip[
    2] = long.Parse(s[2]);
    ip[
    3] = long.Parse(s[3]);

    return (ip[0] << 24) + (ip[1] << 16) + (ip[2] << 8) + ip[3];
    }

    /// <summary>
    /// 长整形 转换 IP
    /// </summary>
    /// <param name="longIP"></param>
    /// <returns></returns>
    public static string Long2IP(long longIP)
    {


    StringBuilder sb
    = new StringBuilder("");
    sb.Append(longIP
    >> 24);
    sb.Append(
    ".");

    //将高8位置0,然后右移16为


    sb.Append((longIP
    & 0x00FFFFFF) >> 16);
    sb.Append(
    ".");


    sb.Append((longIP
    & 0x0000FFFF) >> 8);
    sb.Append(
    ".");

    sb.Append((longIP
    & 0x000000FF));


    return sb.ToString();
    }

    /// <summary>
    /// 将8位日期型整型数据转换为日期字符串数据
    /// </summary>
    /// <param name="date">整型日期</param>
    /// <param name="chnType">是否以中文年月日输出</param>
    /// <returns></returns>
    public static string FormatDate(int date, bool chnType)
    {
    string dateStr = date.ToString();

    if (date <= 0 || dateStr.Length != 8)
    return dateStr;

    if (chnType)
    return dateStr.Substring(0, 4) + "" + dateStr.Substring(4, 2) + "" + dateStr.Substring(6) + "";

    return dateStr.Substring(0, 4) + "-" + dateStr.Substring(4, 2) + "-" + dateStr.Substring(6);
    }


    /// <summary>
    /// string型转换为bool型
    /// </summary>
    /// <param name="strValue">要转换的字符串</param>
    /// <param name="defValue">缺省值</param>
    /// <returns>转换后的bool类型结果</returns>
    public static bool StrToBool(object expression, bool defValue)
    {
    if (expression != null)
    return StrToBool(expression, defValue);

    return defValue;
    }

    /// <summary>
    /// string型转换为bool型
    /// </summary>
    /// <param name="strValue">要转换的字符串</param>
    /// <param name="defValue">缺省值</param>
    /// <returns>转换后的bool类型结果</returns>
    public static bool StrToBool(string expression, bool defValue)
    {
    if (expression != null)
    {
    if (string.Compare(expression, "true", true) == 0)
    return true;
    else if (string.Compare(expression, "false", true) == 0)
    return false;
    }
    return defValue;
    }
    /// <summary>
    /// 将对象转换为Int32类型
    /// </summary>
    /// <param name="strValue">要转换的字符串</param>
    /// <param name="defValue">缺省值</param>
    /// <returns>转换后的int类型结果</returns>
    public static int ObjectToInt(object expression)
    {
    return ObjectToInt(expression, 0);
    }

    /// <summary>
    /// 将对象转换为Int32类型
    /// </summary>
    /// <param name="strValue">要转换的字符串</param>
    /// <param name="defValue">缺省值</param>
    /// <returns>转换后的int类型结果</returns>
    public static int ObjectToInt(object expression, int defValue)
    {
    if (expression != null)
    return StrToInt(expression.ToString(), defValue);

    return defValue;
    }

    /// <summary>
    /// 将对象转换为Int32类型,转换失败返回0
    /// </summary>
    /// <param name="str">要转换的字符串</param>
    /// <returns>转换后的int类型结果</returns>
    public static int StrToInt(string str)
    {
    return StrToInt(str, 0);
    }

    /// <summary>
    /// 将对象转换为Int32类型
    /// </summary>
    /// <param name="str">要转换的字符串</param>
    /// <param name="defValue">缺省值</param>
    /// <returns>转换后的int类型结果</returns>
    public static int StrToInt(string str, int defValue)
    {
    if (string.IsNullOrEmpty(str) || str.Trim().Length >= 11 || !Regex.IsMatch(str.Trim(), @"^([-]|[0-9])[0-9]*(\.\w*)?$"))
    return defValue;

    int rv;
    if (Int32.TryParse(str, out rv))
    return rv;

    return Convert.ToInt32(StrToFloat(str, defValue));
    }

    /// <summary>
    /// string型转换为float型
    /// </summary>
    /// <param name="strValue">要转换的字符串</param>
    /// <param name="defValue">缺省值</param>
    /// <returns>转换后的int类型结果</returns>
    public static float StrToFloat(object strValue, float defValue)
    {
    if ((strValue == null))
    return defValue;

    return StrToFloat(strValue.ToString(), defValue);
    }

    /// <summary>
    /// string型转换为float型
    /// </summary>
    /// <param name="strValue">要转换的字符串</param>
    /// <param name="defValue">缺省值</param>
    /// <returns>转换后的int类型结果</returns>
    public static float ObjectToFloat(object strValue, float defValue)
    {
    if ((strValue == null))
    return defValue;

    return StrToFloat(strValue.ToString(), defValue);
    }

    /// <summary>
    /// string型转换为float型
    /// </summary>
    /// <param name="strValue">要转换的字符串</param>
    /// <param name="defValue">缺省值</param>
    /// <returns>转换后的int类型结果</returns>
    public static float ObjectToFloat(object strValue)
    {
    return ObjectToFloat(strValue.ToString(), 0);
    }

    /// <summary>
    /// string型转换为float型
    /// </summary>
    /// <param name="strValue">要转换的字符串</param>
    /// <returns>转换后的int类型结果</returns>
    public static float StrToFloat(string strValue)
    {
    if ((strValue == null))
    return 0;

    return StrToFloat(strValue.ToString(), 0);
    }

    /// <summary>
    /// string型转换为float型
    /// </summary>
    /// <param name="strValue">要转换的字符串</param>
    /// <param name="defValue">缺省值</param>
    /// <returns>转换后的int类型结果</returns>
    public static float StrToFloat(string strValue, float defValue)
    {
    if ((strValue == null) || (strValue.Length > 10))
    return defValue;

    float intValue = defValue;
    if (strValue != null)
    {
    bool IsFloat = Regex.IsMatch(strValue, @"^([-]|[0-9])[0-9]*(\.\w*)?$");
    if (IsFloat)
    float.TryParse(strValue, out intValue);
    }
    return intValue;
    }

    /// <summary>
    /// 将对象转换为日期时间类型
    /// </summary>
    /// <param name="str">要转换的字符串</param>
    /// <param name="defValue">缺省值</param>
    /// <returns>转换后的int类型结果</returns>
    public static DateTime StrToDateTime(string str, DateTime defValue)
    {
    if (!string.IsNullOrEmpty(str))
    {
    DateTime dateTime;
    if (DateTime.TryParse(str, out dateTime))
    return dateTime;
    }
    return defValue;
    }

    /// <summary>
    /// 将对象转换为日期时间类型
    /// </summary>
    /// <param name="str">要转换的字符串</param>
    /// <returns>转换后的int类型结果</returns>
    public static DateTime StrToDateTime(string str)
    {
    return StrToDateTime(str, DateTime.Now);
    }

    /// <summary>
    /// 将对象转换为日期时间类型
    /// </summary>
    /// <param name="obj">要转换的对象</param>
    /// <returns>转换后的int类型结果</returns>
    public static DateTime ObjectToDateTime(object obj)
    {
    return StrToDateTime(obj.ToString());
    }

    /// <summary>
    /// 将对象转换为日期时间类型
    /// </summary>
    /// <param name="obj">要转换的对象</param>
    /// <param name="defValue">缺省值</param>
    /// <returns>转换后的int类型结果</returns>
    public static DateTime ObjectToDateTime(object obj, DateTime defValue)
    {
    return StrToDateTime(obj.ToString(), defValue);
    }

    /// <summary>
    /// 替换回车换行符为html换行符
    /// </summary>
    public static string StrFormat(string str)
    {
    string str2;

    if (str == null)
    {
    str2
    = "";
    }
    else
    {
    str
    = str.Replace("\r\n", "<br />");
    str
    = str.Replace("\n", "<br />");
    str2
    = str;
    }
    return str2;
    }

    /// <summary>
    /// 转换为简体中文
    /// </summary>
    public static string ToSChinese(string str)
    {
    return Strings.StrConv(str, VbStrConv.SimplifiedChinese, 0);

    }

    /// <summary>
    /// 转换为繁体中文
    /// </summary>
    public static string ToTChinese(string str)
    {
    return Strings.StrConv(str, VbStrConv.TraditionalChinese, 0);

    }


    /// <summary>
    /// 清除字符串数组中的重复项
    /// </summary>
    /// <param name="strArray">字符串数组</param>
    /// <param name="maxElementLength">字符串数组中单个元素的最大长度</param>
    /// <returns></returns>
    public static string[] DistinctStringArray(string[] strArray, int maxElementLength)
    {
    Hashtable h
    = new Hashtable();

    foreach (string s in strArray)
    {
    string k = s;
    if (maxElementLength > 0 && k.Length > maxElementLength)
    {
    k
    = k.Substring(0, maxElementLength);
    }
    h[k.Trim()]
    = s;
    }

    string[] result = new string[h.Count];

    h.Keys.CopyTo(result,
    0);

    return result;
    }

    /// <summary>
    /// 清除字符串数组中的重复项
    /// </summary>
    /// <param name="strArray">字符串数组</param>
    /// <returns></returns>
    public static string[] DistinctStringArray(string[] strArray)
    {
    return DistinctStringArray(strArray, 0);
    }
    //读写INI
    public class GF_INI
    {
    [DllImport(
    "kernel32")]
    private static extern long WritePrivateProfileString(string section, string key, string val, string filePath);
    [DllImport(
    "kernel32")]
    private static extern int GetPrivateProfileString(string section, string key, string def, StringBuilder retVal, int size, string filePath);
    [DllImport(
    "kernel32.dll")]
    public static extern int Beep(int dwFreq, int dwDuration);

    //读ini
    public static void iniFile_SetVal(string in_filename, string Section, string Key, string Value)
    {
    WritePrivateProfileString(Section, Key, Value, in_filename);
    }

    //写INI
    public static string iniFile_GetVal(string in_filename, string Section, string Key)
    {
    StringBuilder temp
    = new StringBuilder(255);
    int i = GetPrivateProfileString(Section, Key, "", temp, 255, in_filename);
    if (i == 0)
    return "";
    else
    return temp.ToString();
    }
    }
    //硬件信息
    public class GF_Hardware
    {
    /// <summary>
    /// cpu序列号
    /// </summary>
    /// <returns></returns>
    public static string getID_CpuId()
    {
    string cpuInfo = "";//cpu序列号
    ManagementClass cimobject = new ManagementClass("Win32_Processor");
    ManagementObjectCollection moc
    = cimobject.GetInstances();
    foreach (ManagementObject mo in moc)
    {
    cpuInfo
    = mo.Properties["ProcessorId"].Value.ToString();
    }
    return cpuInfo;
    }

    /// <summary>
    /// 硬盘ID号
    /// </summary>
    /// <returns></returns>
    public static string getID_HardDiskId()
    {
    string HDid = "";
    ManagementClass cimobject
    = new ManagementClass("Win32_DiskDrive");
    ManagementObjectCollection moc
    = cimobject.GetInstances();
    foreach (ManagementObject mo in moc)
    {
    HDid
    = (string)mo.Properties["Model"].Value;
    }
    return HDid;
    }

    /// <summary>
    /// 获取网卡MacAddress
    /// </summary>
    /// <returns></returns>
    public static string getID_NetCardId()
    {
    string NCid = "";
    ManagementClass mc
    = new ManagementClass("Win32_NetworkAdapterConfiguration");
    ManagementObjectCollection moc
    = mc.GetInstances();
    foreach (ManagementObject mo in moc)
    {
    if ((bool)mo["IPEnabled"] == true)
    NCid
    = mo["MacAddress"].ToString();
    mo.Dispose();
    }
    return NCid;
    }



    }
    //加密解密
    public class GF_Encrypt
    {
    /// <summary>
    /// DES加密
    /// </summary>
    /// <param name="pToEncrypt">加密字符串</param>
    /// <param name="sKey">密钥</param>
    /// <returns></returns>
    public static string string_Encrypt(string pToEncrypt, string sKey)
    {
    if (pToEncrypt == "") return "";
    if (sKey.Length < 8) sKey = sKey + "xuE29xWp";
    if (sKey.Length > 8) sKey = sKey.Substring(0, 8);
    DESCryptoServiceProvider des
    = new DESCryptoServiceProvider();
    //把字符串放到byte数组中
    //原来使用的UTF8编码,我改成Unicode编码了,不行
    byte[] inputByteArray = Encoding.Default.GetBytes(pToEncrypt);
    //建立加密对象的密钥和偏移量
    //原文使用ASCIIEncoding.ASCII方法的GetBytes方法
    //使得输入密码必须输入英文文本
    des.Key = ASCIIEncoding.Default.GetBytes(sKey);
    des.IV
    = ASCIIEncoding.Default.GetBytes(sKey);
    MemoryStream ms
    = new MemoryStream();
    CryptoStream cs
    = new CryptoStream(ms, des.CreateEncryptor(), CryptoStreamMode.Write);
    //Write the byte array into the crypto stream
    //(It will end up in the memory stream)
    cs.Write(inputByteArray, 0, inputByteArray.Length);
    cs.FlushFinalBlock();
    //Get the data back from the memory stream, and into a string
    StringBuilder ret = new StringBuilder();
    foreach (byte b in ms.ToArray())
    {
    //Format as hex
    ret.AppendFormat("{0:X2}", b);
    }
    ret.ToString();
    return ret.ToString();
    }

    /// <summary>
    /// DES解密
    /// </summary>
    /// <param name="pToDecrypt">解密字符串</param>
    /// <param name="sKey">解密密钥</param>
    /// <param name="outstr">返回值</param>
    /// <returns></returns>
    public static bool string_Decrypt(string pToDecrypt, string sKey, out string outstr)
    {
    if (pToDecrypt == "")
    {
    outstr
    = "";
    return true;
    };
    if (sKey.Length < 8) sKey = sKey + "xuE29xWp";
    if (sKey.Length > 8) sKey = sKey.Substring(0, 8);
    try
    {
    DESCryptoServiceProvider des
    = new DESCryptoServiceProvider();
    //Put the input string into the byte array
    byte[] inputByteArray = new byte[pToDecrypt.Length / 2];
    for (int x = 0; x < pToDecrypt.Length / 2; x++)
    {
    int i = (Convert.ToInt32(pToDecrypt.Substring(x * 2, 2), 16));
    inputByteArray[x]
    = (byte)i;
    }
    //建立加密对象的密钥和偏移量,此值重要,不能修改
    des.Key = ASCIIEncoding.Default.GetBytes(sKey);
    des.IV
    = ASCIIEncoding.Default.GetBytes(sKey);
    MemoryStream ms
    = new MemoryStream();
    CryptoStream cs
    = new CryptoStream(ms, des.CreateDecryptor(), CryptoStreamMode.Write);
    //Flush the data through the crypto stream into the memory stream
    cs.Write(inputByteArray, 0, inputByteArray.Length);
    cs.FlushFinalBlock();
    //Get the decrypted data back from the memory stream
    //建立StringBuild对象,CreateDecrypt使用的是流对象,必须把解密后的文本变成流对象
    StringBuilder ret = new StringBuilder();
    outstr
    = System.Text.Encoding.Default.GetString(ms.ToArray());
    return true;
    }
    catch
    {
    outstr
    = "";
    return false;
    }
    }

    /// <summary>
    /// 加密
    /// </summary>
    public class AES
    {
    //默认密钥向量
    private static byte[] Keys = { 0x41, 0x72, 0x65, 0x79, 0x6F, 0x75, 0x6D, 0x79, 0x53, 0x6E, 0x6F, 0x77, 0x6D, 0x61, 0x6E, 0x3F };

    public static string Encode(string encryptString, string encryptKey)
    {
    encryptKey
    = GF_GET.GetSubString(encryptKey, 32, "");
    encryptKey
    = encryptKey.PadRight(32, ' ');

    RijndaelManaged rijndaelProvider
    = new RijndaelManaged();
    rijndaelProvider.Key
    = Encoding.UTF8.GetBytes(encryptKey.Substring(0, 32));
    rijndaelProvider.IV
    = Keys;
    ICryptoTransform rijndaelEncrypt
    = rijndaelProvider.CreateEncryptor();

    byte[] inputData = Encoding.UTF8.GetBytes(encryptString);
    byte[] encryptedData = rijndaelEncrypt.TransformFinalBlock(inputData, 0, inputData.Length);

    return Convert.ToBase64String(encryptedData);
    }

    public static string Decode(string decryptString, string decryptKey)
    {
    try
    {
    decryptKey
    = GF_GET.GetSubString(decryptKey, 32, "");
    decryptKey
    = decryptKey.PadRight(32, ' ');

    RijndaelManaged rijndaelProvider
    = new RijndaelManaged();
    rijndaelProvider.Key
    = Encoding.UTF8.GetBytes(decryptKey);
    rijndaelProvider.IV
    = Keys;
    ICryptoTransform rijndaelDecrypt
    = rijndaelProvider.CreateDecryptor();

    byte[] inputData = Convert.FromBase64String(decryptString);
    byte[] decryptedData = rijndaelDecrypt.TransformFinalBlock(inputData, 0, inputData.Length);

    return Encoding.UTF8.GetString(decryptedData);
    }
    catch
    {
    return "";
    }

    }

    }

    /// <summary>
    /// 加密
    /// </summary>
    public class DES
    {
    //默认密钥向量
    private static byte[] Keys = { 0x12, 0x34, 0x56, 0x78, 0x90, 0xAB, 0xCD, 0xEF };

    /// <summary>
    /// DES加密字符串
    /// </summary>
    /// <param name="encryptString">待加密的字符串</param>
    /// <param name="encryptKey">加密密钥,要求为8位</param>
    /// <returns>加密成功返回加密后的字符串,失败返回源串</returns>
    public static string Encode(string encryptString, string encryptKey)
    {
    encryptKey
    = GF_GET.GetSubString(encryptKey, 8, "");
    encryptKey
    = encryptKey.PadRight(8, ' ');
    byte[] rgbKey = Encoding.UTF8.GetBytes(encryptKey.Substring(0, 8));
    byte[] rgbIV = Keys;
    byte[] inputByteArray = Encoding.UTF8.GetBytes(encryptString);
    DESCryptoServiceProvider dCSP
    = new DESCryptoServiceProvider();
    MemoryStream mStream
    = new MemoryStream();
    CryptoStream cStream
    = new CryptoStream(mStream, dCSP.CreateEncryptor(rgbKey, rgbIV), CryptoStreamMode.Write);
    cStream.Write(inputByteArray,
    0, inputByteArray.Length);
    cStream.FlushFinalBlock();
    return Convert.ToBase64String(mStream.ToArray());

    }

    /// <summary>
    /// DES解密字符串
    /// </summary>
    /// <param name="decryptString">待解密的字符串</param>
    /// <param name="decryptKey">解密密钥,要求为8位,和加密密钥相同</param>
    /// <returns>解密成功返回解密后的字符串,失败返源串</returns>
    public static string Decode(string decryptString, string decryptKey)
    {
    try
    {
    decryptKey
    = GF_GET.GetSubString(decryptKey, 8, "");
    decryptKey
    = decryptKey.PadRight(8, ' ');
    byte[] rgbKey = Encoding.UTF8.GetBytes(decryptKey);
    byte[] rgbIV = Keys;
    byte[] inputByteArray = Convert.FromBase64String(decryptString);
    DESCryptoServiceProvider DCSP
    = new DESCryptoServiceProvider();

    MemoryStream mStream
    = new MemoryStream();
    CryptoStream cStream
    = new CryptoStream(mStream, DCSP.CreateDecryptor(rgbKey, rgbIV), CryptoStreamMode.Write);
    cStream.Write(inputByteArray,
    0, inputByteArray.Length);
    cStream.FlushFinalBlock();
    return Encoding.UTF8.GetString(mStream.ToArray());
    }
    catch
    {
    return "";
    }
    }
    }

    /// <summary>
    /// MD5函数
    /// </summary>
    /// <param name="str">原始字符串</param>
    /// <returns>MD5结果</returns>
    public static string MD5(string str)
    {
    byte[] b = Encoding.UTF8.GetBytes(str);
    b
    = new MD5CryptoServiceProvider().ComputeHash(b);
    string ret = "";
    for (int i = 0; i < b.Length; i++)
    ret
    += b[i].ToString("x").PadLeft(2, '0');

    return ret;
    }

    /// <summary>
    /// SHA256函数
    /// </summary>
    /// /// <param name="str">原始字符串</param>
    /// <returns>SHA256结果</returns>
    public static string SHA256(string str)
    {
    byte[] SHA256Data = Encoding.UTF8.GetBytes(str);
    SHA256Managed Sha256
    = new SHA256Managed();
    byte[] Result = Sha256.ComputeHash(SHA256Data);
    return Convert.ToBase64String(Result); //返回长度为44字节的字符串
    }
    }
  • 相关阅读:
    终于清楚了!!!【使用jenkins发布应用到tomcat详细过程】
    RocketMQ相关问题
    关于idea修改当前使用的git账户的问题
    Elasticsearchan安装初尝01-问题记录
    Redis学习日记-03
    Git初探笔记02
    Git初探笔记01
    Redis学习日记-02
    HDU 1017
    HDU 1013
  • 原文地址:https://www.cnblogs.com/jhabb/p/2038764.html
Copyright © 2011-2022 走看看