는, 내가 사용하는 코드는 다음과 같습니다 :전체 문자셋을 사용하는 MD5, 문자열을 짧게 만드십시오. 나는 C#에서 쉽게 MD5를 사용할 수 있습니다 알고
using System.Security.Cryptography;
public static string MD5(string input)
{
MD5CryptoServiceProvider x = new MD5CryptoServiceProvider();
byte[] bs = System.Text.Encoding.UTF8.GetBytes(input);
bs = x.ComputeHash(bs);
System.Text.StringBuilder s = new System.Text.StringBuilder();
foreach (byte b in bs)
{
s.Append(b.ToString("x2").ToLower());
}
return s.ToString();
}
일반적으로, MD5 문자열은 0-9과-F 32 개 문자 깁니다. 0-9 A-Z a-z와 _를 사용하면 궁금합니다. - 등 64자를 설정하고, MD5 문자열은 더 짧아 질 것입니다. MD5 문자열을 사용하여 무언가를 식별하고 데이터베이스에 저장합니다. 짧은 문자열은 동일한 작업을 수행 할 수 있고 공간을 적게 차지할 수 있으며 색인 생성 시간은 단축됩니다. 그래서 여기
, 내 질문은, 사람이
추신 0-9A-ZA-z._ 문자열로 0-9A-F 문자열을 변경하는 빠른 방법이 여기에있다 MD5 문자열을 int로 바꾸는 것이 가장 좋은 생각입니다. 매우 큰 크기가 될 것입니다. 그런 다음 charset이있는 문자열로 전송하십시오. 천천히 움직일 수 있습니다.
아이디어가 도움이됩니다. 감사.
[편집]
는 나뿐만 아니라 URL의 일부로 필요하기 때문에 결국 나는 내 자신의 일, 내가 문자열이 필요 을 출시, 당신에게 모두 감사드립니다. 고정 길이 문자열을 원하기 때문에 Base64를 사용하지 않습니다.
MD5 16 개 문자이고, 길이는 64 개 문자 I로 변경 될 때, 길이가 20 여기
가되고, 32 I 사용 업데이트 함수이다.
public static string MD520(string input)
{
char[] chars = new char[] { '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', '_', 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z', '-', 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z' };
MD5CryptoServiceProvider x = new MD5CryptoServiceProvider();
byte[] bs = System.Text.Encoding.UTF8.GetBytes(input);
bs = x.ComputeHash(bs);
System.Text.StringBuilder s = new System.Text.StringBuilder();
byte m = 0;
int c = 0;
foreach (byte b in bs)
{
if (m == 2)
{
c = c * b;
for (byte i = 0; i < 4; i++)
{
int n = c % 64;
s.Append(chars[n]);
c = (c - n)/64;
}
m = 0;
}
else
{
c = ((m > 0) ? c : 1) * b;
m++;
}
}
return s.ToString();
}
URL의 일부이기 때문에 문자열을 사용해야합니다. MD5는 약하지만 그냥 태그를 동일하게 사용하는지, 심지어 충돌인지는 중요하지 않습니다. –