- unity中经常需要对软件进行设备硬件的绑定,这里提供一种思路,获取到硬件的设备信息作为加密的内容,然后配合自己定义的加密头拼接成字符串,进行加密后的激活码使用;
- 设置加密内容可写成一个单独的客户端进行授权,解密方法写在自己的软件内作为验证处理;
下面是代码部分,可供选择有DES加密方式和MD5加密;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class SetTime : MonoBehaviour
{
[Header("加密内容")]
public string EncryptTime;
[Header("加密主题")]
public string EncryptTitle;
[Header("加密头")]
public string EncryptHead;
// Start is called before the first frame update
void Start()
{
}
/// <summary>
/// 进行加密内容设置,可以自己定义加密的内容拼接;
/// </summary>
public void SetEncrypt()
{
//根据本机硬件的id和标识更新加密信息;
EncryptTime = SystemInfo.deviceUniqueIdentifier+EncryptHead;
//生成加密内容需要添加一个标识EncryptHead,解密内容时同样使用此标识;
string _encryptInfo = DesTool.EncryptString(EncryptTime, EncryptHead);
//加密内容写入电脑中作为注册信息,因为是经过特殊标识的加密,所以即使注册表里查看也无法破解和更改;
PlayerPrefs.SetString(EncryptTitle, _encryptInfo);
PlayerPrefs.Save();
Debug.Log("写入成功");
}
/// <summary>
/// 获取加密内容,如果获取到硬件的本地注册码和软件内部生成的一致,则验证通过。
/// </summary>
public void GetEncrypt()
{
//获取本机的注册信息;
string _tempInfo = PlayerPrefs.GetString(EncryptTitle);
if (string.IsNullOrEmpty(_tempInfo))
{
Debug.Log("验证失败,软件退出");
}
else
{
//根据标识EncryptHead进行解密;
string _decryptionInfo= DesTool