2017-04-08 140 views
3

我需要使用以下方式将Sql数据库部署到Azure Sql Server中:ARM模板方式以及使用C#代码的更自定义方式。有一个名为uniqueString(string)的ARM模板函数可生成给定字符串的伪随机散列。这是一个确定性的纯函数。Azure ARM uniqueString函数模仿

我需要找到一种方法,从我的C#代码中完全模仿此功能的行为。即我需要将这个函数复制到我的C#代码中。

我在哪里可以找到ARM Api使用的算法?

MSDN reference for uniqueString()

回答

1

我发现了一些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; 
} 
0

我终于找到了解决办法。我使用了一个非常简单的ARM模板,目标是仅输出uniqueString命令的结果。然后我在C#代码中获取这个输出。这个解决方案并不是最快的解决方案;-),但它可以按照需要工作。