Azure ARM uniqueString函数模仿
问题描述:
我需要使用以下方式将Sql数据库部署到Azure Sql Server中:ARM模板方式以及使用C#代码的更自定义方式。有一个名为uniqueString(string)
的ARM模板函数可生成给定字符串的伪随机散列。这是一个确定性的纯函数。Azure ARM uniqueString函数模仿
我需要找到一种方法,从我的C#代码中完全模仿此功能的行为。即我需要将这个函数复制到我的C#代码中。
我在哪里可以找到ARM Api使用的算法?
答
我发现了一些PowerShell代码在这里做这个:https://blogs.technet.microsoft.com/389thoughts/2017/12/23/get-uniquestring-generate-unique-id-for-azure-deployments/
我转换这个代码为C#:
public string GetUniqueString(string id, int length = 13)
{
string result = "";
var buffer = System.Text.Encoding.UTF8.GetBytes(id);
var hashArray = new System.Security.Cryptography.SHA512Managed().ComputeHash(buffer);
for(int i = 1; i <= length; i++)
{
var b = hashArray[i];
var c = Convert.ToChar((b % 26) + (byte)'a');
result = result + c;
}
return result;
}
答
我终于找到了解决办法。我使用了一个非常简单的ARM模板,目标是仅输出uniqueString
命令的结果。然后我在C#代码中获取这个输出。这个解决方案并不是最快的解决方案;-),但它可以按照需要工作。