高德地图小程序OPENAPI 事件回调加解密工具.NET/C# 实现
第三方对接加解密系列
2. 高德地图小程序OPENAPI 事件回调加解密工具.NET/C# 实现[附源码]
正文
高德官方地址: lbs.amap.com/api/wia-ope…
using System;
using System.Security.Cryptography;
using System.Text;
public class EncryptUtil
{
private readonly byte[] _key;
private readonly Aes _aes;
public EncryptUtil(string key)
{
_key = GetSha1PrngKey(key);
_aes = Aes.Create();
_aes.Mode = CipherMode.ECB;
_aes.Padding = PaddingMode.PKCS7;
_aes.Key = _key;
}
private static byte[] GetSha1PrngKey(string key)
{
using (SHA1 sha1 = new SHA1CryptoServiceProvider())
{
byte[] keyBytes = Encoding.UTF8.GetBytes(key);
byte[] hash = sha1.ComputeHash(keyBytes);
hash = sha1.ComputeHash(hash);
byte[] finalKey = new byte[16];
Array.Copy(hash, 0, finalKey, 0, 16);
return finalKey;
}
}
public string Encrypt(string originalData)
{
using (ICryptoTransform encryptor = _aes.CreateEncryptor())
{
byte[] inputBytes = Encoding.UTF8.GetBytes(originalData);
byte[] result = encryptor.TransformFinalBlock(inputBytes, 0, inputBytes.Length);
return Convert.ToBase64String(result);
}
}
public string Decrypt(string encryptedData)
{
using (ICryptoTransform decryptor = _aes.CreateDecryptor())
{
byte[] encryptedBytes = Convert.FromBase64String(encryptedData);
byte[] result = decryptor.TransformFinalBlock(encryptedBytes, 0, encryptedBytes.Length);
return Encoding.UTF8.GetString(result).TrimEnd('\0');
}
}
}
public class Program
{
public static void Main()
{
string secret = "密钥";
EncryptUtil eg = new EncryptUtil(secret);
string data = "测试内容";
string encryptData = eg.Encrypt(data);
string decryptData = "需更新为自己实际的";
Console.WriteLine("Original value: " + data);
Console.WriteLine("Encrypted value: " + encryptData);
Console.WriteLine("Decrypted value: " + eg.Decrypt(decryptData));
}
}