44 lines
1.3 KiB
C#
44 lines
1.3 KiB
C#
using Base62;
|
|
using Microsoft.AspNetCore.Mvc;
|
|
using System;
|
|
using System.Collections.Generic;
|
|
using System.Linq;
|
|
using System.Security.Cryptography;
|
|
using System.Text;
|
|
using System.Threading.Tasks;
|
|
using Microsoft.Extensions.Logging;
|
|
namespace QRCodeService.Controllers
|
|
{
|
|
[Route("[controller]/[action]")]
|
|
public class PlaygroundController:ControllerBase
|
|
{
|
|
private readonly ILogger<PlaygroundController> logger;
|
|
|
|
public PlaygroundController(ILogger<PlaygroundController> logger)
|
|
{
|
|
this.logger = logger;
|
|
}
|
|
|
|
public IActionResult GenShortCode(string url)
|
|
{
|
|
logger.LogInformation("duduledule");
|
|
var codes = new string[2];
|
|
using (var md5 = MD5.Create())
|
|
{
|
|
var chunkSize = 8;
|
|
var result = md5.ComputeHash(Encoding.UTF8.GetBytes(url));
|
|
for (int i = 0; i < 2; i++)
|
|
{
|
|
var first = result.Take(chunkSize).ToArray();
|
|
//即超过30位的忽略处理
|
|
var res = BitConverter.ToInt64(first);
|
|
var code = res.ToBase62();
|
|
codes[i] = code;
|
|
result = result.Skip(chunkSize).ToArray();
|
|
}
|
|
return Ok(codes);
|
|
}
|
|
}
|
|
}
|
|
}
|