<p><span style="font-size: 18px;"></span></p>
當你想隐藏資料庫id時,你可以使用 Hashids 這個開源庫,類似的開源項目比較多,這裡隻針對 Hashids 做個使用說明
.net 版本的資料位址如下:
官網:http://hashids.org/net/
代碼:https://github.com/ullmark/hashids.net
以下是使用方法:
using System;
using HashidsNet;
using Microsoft.VisualStudio.TestTools.UnitTesting;
namespace HashidsNetTester
{
[TestClass]
public class HashidsTest
{
/// <summary>
/// 鹽
/// </summary>
private string salt = "this is my salt string";
[TestMethod]
public void TestEncode()
{
//使用指定掩碼,擷取最小長度的hash值
Hashids hs = new Hashids(salt,5);
var n1 = 1;
var s1 = hs.Encode(n1);//編碼:一個數值進行
var dn1 = hs.Decode(s1)[0];//解碼:一個數值
Assert.IsTrue(dn1 == n1);
}
[TestMethod]
public void TestEncodeArr()
{
Hashids hs = new Hashids(salt, 5);
var n1 = new int[]{11,22,33,44};
var s1 = hs.Encode(n1);//編碼多個數值組,用于資料庫中聯合主鍵
var dn1 = hs.Decode(s1);//解碼:獲得編碼前的聯合主鍵數組
for (int i = 0; i < n1.Length; i++)
{
Assert.IsTrue(dn1[i] == n1[i]);
}
}
[TestMethod]
public void TestEncodeHex()
{
Hashids hs = new Hashids(salt, 5);
var n1 = "1abc";
var s1 = hs.EncodeHex(n1);//編碼:16進制數
var dn1 = hs.DecodeHex(s1);//解碼:獲得16進制數
Assert.IsTrue(n1.Equals(dn1, StringComparison.CurrentCultureIgnoreCase));
}
}
}