什么是加密
在互联网时代,我们需要账号密码进行相关的页面登陆,功能服务,虚拟资源,账号管理等。但是同样也有一些使用技术手段进行盗号,破解,砸壳让正常的游戏玩家,和运营公司损失惨重。所以保护个人隐私,个人利益,公司利益就至关重要。加密由此而来。最早的加密在中国春秋战国时代,虎符的出现就是一种传递信息的加密手段。但是互联网时代加密的手段:套接字,使用Post请求(最基本的手段),MD5加密,SHA加密,RSA加密,DES加密,RC4加密,3DES,IDEA加密等。都是使用算法加密。-
MD5
即“消息摘要算法第五版”,这是一种不可逆
的算法,输入信息生成唯一的128位散列值(32个字符)-
不可逆
什么是不可逆?就是只可以过去,不可以回来。例如人的寿命。
比如:
你是没有办法进行解密的,但是有一些爱好者就利用存储空间,记录这种计算后的结果,导致MD5加密也可以进行破解。目前破解率在70%-80%。所以也不是绝对的安全。
-
C#中如何进行加密?
using System;
using System.Collections.Generic;
using System.Linq;
using System.Security.Cryptography;
using System.Text;
using System.Threading.Tasks;
namespace 加密与解密
{
class Program
{
static void Main(string[] args)
{
//十进制 16112823919216812720820617719017010918916719636
// A180EFC0A87FD0CEB1BEAA6DBDA7C424
//16进制 A180EFC0A87FD0CEB1BEAA6DBDA7C424
string pwd = "ABA180EFC0A87FD0CEB1BEAA6DBDA7C424";
string md5 = GetMD5("leichao");
Console.WriteLine(pwd);
Console.WriteLine(md5);
if (md5.EndsWith(pwd))
{
Console.WriteLine("登陆成功");
}
else
{
Console.WriteLine("密码错误");
}
Console.ReadKey();
}
static string GetMD5(string message)
{
MD5 m5 = MD5.Create();
// 将字符串转成二进制数组
byte[] mbyte = Encoding.Default.GetBytes(message);
// 获取MD5加密后的二进制数组
byte[] m5byte = m5.ComputeHash(mbyte);
string result = "";
for (int i = 0; i < m5byte.Length; i++)
{
result += m5byte[i].ToString("X2");
}
return "AB"+ result;
}
}
}
- 关于解密
细心的朋友可能发现,现在游戏的账号密码一旦丢失,只能重新修改,而不能进行找回操作。这就是算法不可逆的结果体现之一,所以保护好自己的账号是最重要的,服务器不存储玩家的密码也是一家科技公司该有的防护措施,否则服务器被攻击,账号资料泄露,会造成更大的损失。 - 延伸
学会了MD5加密,对于其他的加密手段应该可以自行学习,原理是一样的。网络有大量的加密手段,你只需要选择符合你需求的算法进行实现就可以。