using System.Collections.Generic;
using System;
using System.Text;
using System.Security.Cryptography;
namespace HDL_ON.DAL.Net
{
public class RemoteRequestParameters
{
public string RequestVersion;
public int RequestSource;
public string LoginAccessToken;
public int RequestProtocolType;
public int HdlGatewayGatewayType = 0;
public bool IsRedirectSelectEmqServer = false;
///
/// 平台类型字符串
///
public string PlatformStr;
///
/// 发布主题负载
///
public string PublishPayloadJsonStr;
public string Mac = "";
public string GroupName = "";
}
public class MqttRemoteInfo
{
public List pageData;
public int pageIndex = 0;
public int pageSize = 10;
public int totalCount = 3;
public int totalPages = 1;
public bool hasPreviousPage = false;
public bool hasNextPage = false;
}
public class MqttInfo
{
public string connEmqDomainPort;
public string connEmqClientId;
public string connEmqUserName;
public string connEmqPwd;
public List AccountAllGateways;
}
public class RemoteMACInfo
{
public string mac;
public string macMark;
public string isValid;
public string aesKey;
public bool isNewBusproGateway;
public string groupName;
public string projectName;
public string userName;
public string clientId;
//app自定义数据
public string md5_mac_string;
public string LoginAccessToken;
}
namespace Shared.Securitys
{
public partial class EncryptionService
{
#region 加密
///
/// 加密主题为Base64
///
///
///
///
public static string AesEncryptTopic(string pToEncrypt, string key)
{
if (string.IsNullOrEmpty(pToEncrypt)) return null;
if (string.IsNullOrEmpty(key)) return pToEncrypt;
//需要加密内容的明文流
Byte[] toEncryptArray = Encoding.UTF8.GetBytes(pToEncrypt);
//配置AES加密Key(密钥、向量、模式、填充)
RijndaelManaged rm = new RijndaelManaged
{
Key = Encoding.UTF8.GetBytes(key),
IV = Encoding.UTF8.GetBytes(key),
Mode = CipherMode.CBC,
Padding = PaddingMode.PKCS7
};
//创建AES加密器对象
ICryptoTransform cTransform = rm.CreateEncryptor();
//使用AES将明文流转成密文字节数组
Byte[] resultArray = cTransform.TransformFinalBlock(toEncryptArray, 0, toEncryptArray.Length);
//将AES生成的密文字节数组转成Base64字符串
return Convert.ToBase64String(resultArray, 0, resultArray.Length);
}
///
/// 加密负载为二进制流
///
///
///
///
public static byte[] AesEncryptPayload(byte[] toEncryptArray, string key)
{
if (string.IsNullOrEmpty(key)) return toEncryptArray;
//配置AES加密Key(密钥、向量、模式、填充)
var rm = new RijndaelManaged
{
Key = Encoding.UTF8.GetBytes(key),
IV = Encoding.UTF8.GetBytes(key),
Mode = CipherMode.CBC,
Padding = PaddingMode.PKCS7
};
//创建AES加密器对象
var cTransform = rm.CreateEncryptor();
//使用AES将明文流转成密文字节数组
return cTransform.TransformFinalBlock(toEncryptArray, 0, toEncryptArray.Length);
}
#endregion
#region 解密
///
/// 解密主题数据
///
///
///
///
public static string AesDecryptTopic(string pToDecrypt, string key)
{
//AES密文Base64转成字符串
Byte[] toEncryptArray = Convert.FromBase64String(pToDecrypt);
//配置AES加密Key(密钥、向量、模式、填充)
RijndaelManaged rm = new RijndaelManaged
{
Key = Encoding.UTF8.GetBytes(key),
IV = Encoding.UTF8.GetBytes(key),
Mode = CipherMode.CBC,
Padding = PaddingMode.PKCS7
};
//创建AES解密器对象
ICryptoTransform cTransform = rm.CreateDecryptor();
//使用AES将密文流转成明文的字节数组
Byte[] resultArray = cTransform.TransformFinalBlock(toEncryptArray, 0, toEncryptArray.Length);
//转成字符串
return Encoding.UTF8.GetString(resultArray);
}
///
/// 采用Aes解密负载数据
///
///
///
///
public static byte[] AesDecryptPayload(byte[] toEncryptArray, string key)
{
//配置AES加密Key(密钥、向量、模式、填充)
var rm = new RijndaelManaged
{
Key = Encoding.UTF8.GetBytes(key),
IV = Encoding.UTF8.GetBytes(key),
Mode = CipherMode.CBC,
Padding = PaddingMode.PKCS7
};
//创建AES解密器对象
var cTransform = rm.CreateDecryptor();
//使用AES将密文流转成明文的字节数组
return cTransform.TransformFinalBlock(toEncryptArray, 0, toEncryptArray.Length);
}
#endregion
}
}
}