C#将字母或数字加密成字母的方法
更新时间:2015年03月10日 16:10:13 作者:MeGoodtoo
这篇文章主要介绍了C#将字母或数字加密成字母的方法,涉及C#操作字符串的技巧,具有一定参考借鉴价值,需要的朋友可以参考下
本文实例讲述了C#将字母或数字加密成字母的方法。分享给大家供大家参考。具体实现方法如下:
复制代码 代码如下:
public class MD5
{
static List<KeyValuePair<char, char>> MappingList;
#region 加密 public static string Encrypt(string str)
/// <summary>
/// 加密
/// </summary>
/// <param name="str">要加密的字符串</param>
/// <returns>返回结果的字符串</returns>
public static string Encrypt(string str)
{
MappingList = new List<KeyValuePair<char, char>>();
for (char c = '0'; c <= '9'; c++)
MappingList.Add(new KeyValuePair<char, char>(c, (char)(c - '0' + 'a')));
for (char c = 'a'; c <= 'f'; c++)
MappingList.Add(new KeyValuePair<char, char>(c, (char)(c - 'a' + 'u')));
return Encoding.ASCII.GetBytes(str)
.Select((b, i) => (b ^ ((byte)(0xa0 + i))).ToString("x2"))
.Aggregate("", (s, c) => s + c)
.ToCharArray().Select(c => MappingList.First(kv => kv.Key == c).Value)
.Aggregate("", (s, c) => s + c);
}
#endregion
#region 解密 public static string Decrypt(string str)
/// <summary>
/// 解密
/// </summary>
/// <param name="str">解密的字符串</param>
/// <returns>返回结果字符串</returns>
public static string Decrypt(string str)
{
string base16 = str.ToCharArray()
.Select(c => MappingList.First(kv => kv.Value == c).Key)
.Aggregate("", (s, c) => s + c);
return Encoding.ASCII.GetString((new byte[base16.Length / 2])
.Select((b, i) => (byte)(Convert.ToByte(base16.Substring(i * 2, 2), 16) ^ ((byte)(0xa0 + i)))).ToArray());
}
#endregion
}
{
static List<KeyValuePair<char, char>> MappingList;
#region 加密 public static string Encrypt(string str)
/// <summary>
/// 加密
/// </summary>
/// <param name="str">要加密的字符串</param>
/// <returns>返回结果的字符串</returns>
public static string Encrypt(string str)
{
MappingList = new List<KeyValuePair<char, char>>();
for (char c = '0'; c <= '9'; c++)
MappingList.Add(new KeyValuePair<char, char>(c, (char)(c - '0' + 'a')));
for (char c = 'a'; c <= 'f'; c++)
MappingList.Add(new KeyValuePair<char, char>(c, (char)(c - 'a' + 'u')));
return Encoding.ASCII.GetBytes(str)
.Select((b, i) => (b ^ ((byte)(0xa0 + i))).ToString("x2"))
.Aggregate("", (s, c) => s + c)
.ToCharArray().Select(c => MappingList.First(kv => kv.Key == c).Value)
.Aggregate("", (s, c) => s + c);
}
#endregion
#region 解密 public static string Decrypt(string str)
/// <summary>
/// 解密
/// </summary>
/// <param name="str">解密的字符串</param>
/// <returns>返回结果字符串</returns>
public static string Decrypt(string str)
{
string base16 = str.ToCharArray()
.Select(c => MappingList.First(kv => kv.Value == c).Key)
.Aggregate("", (s, c) => s + c);
return Encoding.ASCII.GetString((new byte[base16.Length / 2])
.Select((b, i) => (byte)(Convert.ToByte(base16.Substring(i * 2, 2), 16) ^ ((byte)(0xa0 + i)))).ToArray());
}
#endregion
}
希望本文所述对大家的C#程序设计有所帮助。
相关文章
C#设计模式之Mediator中介者模式解决程序员的七夕缘分问题示例
这篇文章主要介绍了C#设计模式之Mediator中介者模式解决程序员的七夕缘分问题,简单说明了中介者模式的定义并结合七夕缘分问题实例分析了中介者模式的具体使用技巧,需要的朋友可以参考下2017-09-09Unity编辑器资源导入处理函数OnPostprocessTexture实例深入解析
这篇文章主要为大家介绍了Unity编辑器资源导入处理函数OnPostprocessTexture实例深入解析,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪2023-09-09C#开发WinForm清空DataGridView控件绑定的数据
本文详细讲解了C#开发WinForm清空DataGridView控件绑定数据的方法,文中通过示例代码介绍的非常详细。对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下2022-03-03
最新评论