ども、Norimakiです。
PHPなどのソースはネットで探せば結構当たるもんですが、
Delphiでのソースはなかなか当たりません。
ということで、DelphiでSHA1、MD5、BASE64を求める方法を。
ただ、日本語は通らないみたいです。
uses ..... ,IdHashMessageDigest,IdHash,IdHashSHA,IdCoderMIME; procedure TForm1.MD5_SHA1_BASE64; var InputStr:string; MD5 :TIdHashMessageDigest5; Sha :TIdHash; Base64:TIdEncoderMIME; MD5Hash :string; SHA1Hash :string; MD5_Base64 :string; SHA1_Base64:string; begin InputStr:='TEST STRING'; MD5 :=TIdHashMessageDigest5.Create; MD5Hash:=LowerCase(md5.HashBytesAsHex (TIdBytes(TEncoding.ASCII.GetBytes(InputStr)))); Sha :=TIdHashSHA1.Create; SHA1Hash:=LowerCase(Sha.HashBytesAsHex (TIdBytes(TEncoding.ASCII.GetBytes(InputStr)))); Base64 :=TIdEncoderMIME.Create; MD5_Base64 :=Base64.EncodeBytes(MD5.HashBytes (TIdBytes(TEncoding.ASCII.GetBytes(InputStr)))); SHA1_Base64:=Base64.EncodeBytes(Sha.HashBytes (TIdBytes(TEncoding.ASCII.GetBytes(InputStr)))); ShowMessage(InputStr +#13#10 +MD5Hash +#13#10 +Sha1Hash +#13#10 +MD5_Base64 +#13#10 +SHA1_Base64+#13#10 ); FreeAndNil(MD5); FreeAndNil(Sha); FreeAndnil(Base64); end;
ブログ投稿ツールには投稿APIを使うツールがあり、
XML-RPC方式なら普通にデータをPostしてあげればOKですが、
ライブドアやアメブロなどのATOM API方式ではWSSE認証が必要です。
WSSE認証にはSHA1とBASE64が必要で、
アメブロの場合はさらにパスワードをMD5化する必要があるとのこと。
ということで、SHA1、MD5、BASE64の処理を備忘録として載せておきます。
で、かなりハマったのがBASE64の処理。
Base64.EncodeBytes
の引数を普通の文字列で与えてしまっていたこと。
文字列は人間が見やすいように変換したものなので、
本来、Base64.EncodeBytesに渡すべきは、生のデータ。
つまり、文字列に変換する前のTIdBytesでなければいけない。
ということ。
ちょっと考えれば当たり前なんですが、
そのちょっとに思い当たらないという。
まだまだ精進が足りません。
ではでは。
Norimakiでした。