2008年6月5日 のアーカイブ

GoogleAnalyticsのベンチを見てみました。

GoogleAnalyticsのベンチを見てみました。をはてなブックマークに追加 GoogleAnalyticsのベンチを見てみました。をdel.icio.usに追加 Yahoo!ブックマークに登録 GoogleAnalyticsのベンチを見てみました。をGoogle Bookmarksに追加 GoogleAnalyticsのベンチを見てみました。をtwitterにポスト
2008年6月5日 木曜日
session.PNG
GoogleAnalyticsにベンチマークという機能がありまして、同じくらいのサイズ(Googleインデクス数かエントリ数かわかりませんが)のサイトと比較が出来るみたいだったのでやってみました。
このグラフは、ソフトウェア関係のベンチマークです。やはり、会社の業務か何かで調べたいことを検索して訪れてもらっているせいか、土日あたりにポコンと凹んでいるのが分かります。ソフトウェアを扱われてるサイトでも同様にへこんでいるみたいですね。なるほどー。

ちなみにコレはセッション数をあらわしたグラフなのですが、直帰率はといいますとアホみたいに高くて見ると非常にへこみます。じわじわと、コンマ何パーセントかずつ減ってきてはいるのですが、70%は即帰ってしまわれるようで。ワタシといたしましては、うああぁ。まってぇぇぇくれぇええ。と言う気持ちでいっぱいです。みてみてーみたいな。ガバーみたいな(コートを開くジェスチャーをしながら)(こういうのが悪いんだと思います)

session2.PNG
で、こちらはマルチメディアコンテンツ。ムービーとかそういうのを扱っているサイトのことだと思います。土日に関係なく平たく安定してサイトに訪れるようです。サイトで扱ってるコンテンツによって全然動きが違うんですね。へー。いろいろ扱うエントリによって違ってくるなら、美容関係のエントリでも書こうかしら。「フワくしゃモテゆるモジャ巻き髪の上手な作り方特集!」とかいって。モジャ?

証明書(公開鍵)で暗号化するサンプルソース(C#)

証明書(公開鍵)で暗号化するサンプルソース(C#)をはてなブックマークに追加 証明書(公開鍵)で暗号化するサンプルソース(C#)をdel.icio.usに追加 Yahoo!ブックマークに登録 証明書(公開鍵)で暗号化するサンプルソース(C#)をGoogle Bookmarksに追加 証明書(公開鍵)で暗号化するサンプルソース(C#)をtwitterにポスト
2008年6月5日 木曜日
証明書を使って署名・暗号化を行ってメール送信したいということがありますが、どうやって組めばいいのかいろいろと探してたらありました。
このサンプルソースでは署名はしてないですが、MSサポートオンラインにサンプルがあります。日本語でおkな自動翻訳がされてます。そのサンプルの一部をC#で書きました。CAPICOMを使っていますのでダウンロードしてインストールする必要があります。
また、COMコンポーネントをシステムに登録するために

regsvr32 capicom.dll

も忘れずに。

smime.PNG
取得した証明書(smime.p7m)を

ファイル名を指定して実行→mmc
コンソール→スナップインの追加と削除→追加→証明書
ストアの任意の場所に証明書をインポート
でインストールしておく必要があります。

サンプルソース

using System;
using System.Text;
using CAPICOM;
using CDO;
using ADODB;
using System.IO;
using System.Web.UI;
namespace ConsoleApplication
{
class Program
{
static void Main( string[] args )
{
Message msg = new Message();
msg.To = "hoge@domain.com";
msg.From = "moge@domain.com";
msg.Subject = "subject";
msg.TextBody = "body";
Program inst = new Program();
inst.EnvelopeMessage( msg ).Send();
return;
}
private void SetConfigure( Message prmMsg )
{
prmMsg.Configuration.Fields["http://schemas.microsoft.com/cdo/configuration/smtpserver"].Value = SMTPSRV;
prmMsg.Configuration.Fields["http://schemas.microsoft.com/cdo/configuration/smtpserverport"].Value = 25;
prmMsg.Configuration.Fields["http://schemas.microsoft.com/cdo/configuration/sendusing"].Value = 2;
prmMsg.Configuration.Fields.Update();
}
private Certificate GetCertificate()
{
Store store = new Store();
// 証明書をインポートした場所
store.Open(
CAPICOM_STORE_LOCATION.CAPICOM_LOCAL_MACHINE_STORE,
CAPICOM.Constants.CAPICOM_OTHER_STORE,
CAPICOM_STORE_OPEN_MODE.CAPICOM_STORE_OPEN_EXISTING_ONLY |
CAPICOM_STORE_OPEN_MODE.CAPICOM_STORE_OPEN_READ_ONLY
);
Certificate retCert = null;
foreach( Certificate tmpCert in store.Certificates )
{
// 証明書→詳細設定の拇印
// Certificate.Thumbprintは、半角スペースを含まないみたい。
if( tmpCert.Thumbprint.ToLower().Equals("<your thumb print>") )
{
retCert = tmpCert;
break;
}
}
return retCert;
}
public Message EnvelopeMessage( Message prmMsg )
{
UtilitiesClass util = new UtilitiesClass();
Message secureMsg = new Message();
secureMsg.DataSource.OpenObject( prmMsg, "IMessage" );
secureMsg.BodyPart.ContentMediaType = "application/pkcs7-mime; smime-type=enveloped-data";
secureMsg.BodyPart.ContentTransferEncoding = "base64";
secureMsg.BodyPart.Fields[ "urn:schemas:mailheader:content-disposition"].Value = "attachment;FileName=smime.p7m";
secureMsg.BodyPart.Fields[ "urn:schemas:mailheader:content-description"].Value = "S/MIME Encrypted Message";
secureMsg.BodyPart.Fields.Update();
Certificate cert = null;
if ((cert = GetCertificate()) == null)
throw new Exception("証明書が見つからない");
EnvelopedData envlpInst = new EnvelopedDataClass();
envlpInst.Recipients.Add(cert);
ADODB.Stream srcStrm = prmMsg.BodyPart.GetStream();
srcStrm.Type = StreamTypeEnum.adTypeBinary;
envlpInst.Content = util.ByteArrayToBinaryString( srcStrm.Read( srcStrm.Size ) );
String cryptStr = envlpInst.Encrypt( CAPICOM_ENCODING_TYPE.CAPICOM_ENCODE_BASE64 );
ADODB.Stream destStrm = secureMsg.BodyPart.GetDecodedContentStream();
destStrm.Type = StreamTypeEnum.adTypeBinary;
destStrm.Write( Convert.FromBase64String( cryptStr ) );
destStrm.Flush();
destStrm.Close();
// smtp設定
SetConfigure( secureMsg );
return secureMsg;
}
}
}