高德地图小程序OPENAPI 事件回调加解密工具.NET/C# 实现[附源码]

133 阅读1分钟

高德地图小程序OPENAPI 事件回调加解密工具.NET/C# 实现

第三方对接加解密系列

1. 得物开放平台.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));
    }
}