如何为一系列 Int32 数字生成唯一标识符

How to generate a unique identifier for a range of Int32 numbers

有没有办法为给定范围的 Int32 数字计算和生成唯一标识符?例如请看例子:

var range1 = [a, b, c, d];
var unique1 = GenerateUnique(range1);

var range2 = [b, a, d, c];
var unique2 = GenerateUnique(range2);

// unique1 and unique2 should be equal. I mean:
var areEqual = unique1 == unique2; // should be true


var range3 = [a, b, c, d];
var unique3 = GenerateUnique(range3);

// unique1 and unique3 should be equal. I mean:
areEqual = unique1 == unique3; // should be true


var range4 = [a, b, c, e]; // it has not d, but has e. different array.
var unique4 = GenerateUnique(range4);

// unique1 and unique4 should NOT be equal. I mean:
areEqual = unique1 == unique4; // should NOT be true / should be false


private int /* or even string */ GenerateUnique(int[] range) {
    // what would be the implementation of this method?
} 

更新:

1- 范围没有任何重复的成员。所以不会有 [1, 2, 3, 4, 4] 集。所以,总有 [1, 2, 3, 4]

2-数组可以排序。没问题。

3- 目的:我在数据库中有大量的项目。有时,我需要生成它们的 Word 文档。而且,我不想重新生成以前生成的文档。而已。范围是可修改的,所以我想为某个范围重新生成一个文档,当且仅当一个项目有 added/removed to/from 范围时。 注意:更改数据库并保存范围的最后更改不是一种选择。

我认为对整数列表进行排序,然后使用任何标准哈希函数(MD5、SHA1,如果需要,甚至是 CRC32)都可以完美地工作。