为什么INDY中MD5控件出来的值和网上C#中MD5值不一样啊该如何解决
为什么INDY中MD5控件出来的值和网上C#中MD5值不一样啊?
以下为函数
///////////////////////////md5
AnsiString __fastcall Strip(AnsiString S)
{
return S.Delete(1, 2);
}
AnsiString md5ToString(AnsiString S)
{
AnsiString AHex;
for (int i=1; i <=S.Length(); i++)
{
AHex += IntToHex((unsigned char)S[i], 2);// + " ";
}
return AHex;
}
String Md5Str(String src)
{
TIdCoderMD5 *md5=new TIdCoderMD5(NULL);
md5-> Reset();
md5-> AutoCompleteInput = true;
String tmp1 = md5-> CodeString(src);
String tmp2 = Strip(md5-> CodeString(src));
String tmp=md5ToString(md5-> CodeString(src));
delete md5;
md5=NULL;
return tmp;
}
//////////////////////////md5 end
Edit1-> Text = 123;
Edit2-> Text = Md5Str(Edit1-> Text);
//网上MD5的值:
MD5加密值(16位):ac59075b964b0715
MD5加密值(32位):202cb962ac59075b964b07152d234b70
//自动生成对象后得到值:303B73E1CF6540F8E946464E691B15416544
//放控件后得到值:707CB0762E5F098DE19CE860472F843E
并且自己放控件生成的值和自动生成MD5对象后生成的值也不一样?为什么会是这样呢?
------解决方案--------------------
MD5 是公开算法,参数略为不同结果自然不同了
------解决方案--------------------
大个比方:某款锁而言,其设计结构都是一样的,但弹子大小位置不同(参数),所以需要不同的钥匙才能开启(密钥)
------解决方案--------------------
按理应该一样的,INDY的MD5没用过,不过MD5 For C++的网上有一堆
------解决方案--------------------
有下载
以下为函数
///////////////////////////md5
AnsiString __fastcall Strip(AnsiString S)
{
return S.Delete(1, 2);
}
AnsiString md5ToString(AnsiString S)
{
AnsiString AHex;
for (int i=1; i <=S.Length(); i++)
{
AHex += IntToHex((unsigned char)S[i], 2);// + " ";
}
return AHex;
}
String Md5Str(String src)
{
TIdCoderMD5 *md5=new TIdCoderMD5(NULL);
md5-> Reset();
md5-> AutoCompleteInput = true;
String tmp1 = md5-> CodeString(src);
String tmp2 = Strip(md5-> CodeString(src));
String tmp=md5ToString(md5-> CodeString(src));
delete md5;
md5=NULL;
return tmp;
}
//////////////////////////md5 end
Edit1-> Text = 123;
Edit2-> Text = Md5Str(Edit1-> Text);
//网上MD5的值:
MD5加密值(16位):ac59075b964b0715
MD5加密值(32位):202cb962ac59075b964b07152d234b70
//自动生成对象后得到值:303B73E1CF6540F8E946464E691B15416544
//放控件后得到值:707CB0762E5F098DE19CE860472F843E
并且自己放控件生成的值和自动生成MD5对象后生成的值也不一样?为什么会是这样呢?
------解决方案--------------------
MD5 是公开算法,参数略为不同结果自然不同了
------解决方案--------------------
大个比方:某款锁而言,其设计结构都是一样的,但弹子大小位置不同(参数),所以需要不同的钥匙才能开启(密钥)
------解决方案--------------------
按理应该一样的,INDY的MD5没用过,不过MD5 For C++的网上有一堆
------解决方案--------------------
有下载