有关delphi的utf8,sha-1和base64
C#代码是这样的:
- C# code
public string Hash(string text){var data = Encoding.UTF8.GetBytes(text);SHA1 sha = new SHA1CryptoServiceProvider();var code = sha.ComputeHash(data);return Convert.ToBase64String(code);}text是121122
return是wZ6LpbQl6S2GtHGsAasNJAark7E=
delphi好像没有标准的SHA1的转码函数,base64的找到了,在EncdDecd这个单元里有,我怎么写都写不出.net转码的结果。
delphi已经被我写成这样了,已经完全晕了,请高手帮我看看,我是神马地方搞错了。
- Delphi(Pascal) code
procedure TForm1.btn1Click(Sender: TObject);var Context: TSHA1Context; Digest: TSHA1Digest; s: string; sm_in,sm_out: TStringStream; buf:TBytes;begin s:=UTF8Encode('121122'); SHA1Init(Context); SHA1Update(Context,@s[1],length(s)); SHA1Final(Context,Digest); SetLength(buf,Length(Digest)); move(Digest[0],buf[0],Length(Digest)); //buf:=Digest; sm_in:=TStringStream.Create(buf); sm_out:=TStringStream.Create; EncodeStream(sm_in, sm_out); ShowMessage(sm_out.DataString);end;谁能帮帮我。。。。
[解决办法]
delphi官方没有出sha1
可以下载个cnvcl,里面有sha1.pas