RSA:SHA1 の署名: .NET & M2Crypt(Python)

hdknr@debiansept:~/pytx$ python2.5
Python 2.5 (release25-maint, Jul 20 2008, 20:47:25)
[GCC 4.1.2 20061115 (prerelease) (Debian 4.1.1-21)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> from M2Crypto import RSA
>>> import hashlib
>>> pri=RSA.load_key('tx.lafoglia.jp/pri.pem')
>>> x="You're The First, The Last, My Everything"
>>> d=hashlib.sha1(x).digest()
>>> s=pri.sign(d)
>>> import binascii
>>> binascii.b2a_hex(s)
'36c2d32345f0ed5ee0beec5687b732c1181fff84ac89b99525b28f3154847f2ef9969de0b5c9d569f4cad19e6c975668de8e416e9036d5b3f5db6867178a1f05aa58148d947a77924e753725ab37408613dfa5cb9b5d7f8b8603bcee13fb3763ebd63dc4f2c7abb96dfb8a2d1d38e064b39d407ea031868f84bd1a35012c0464'
 
C#
        private static string Sign_Pkcs12_Pem(string src)
        {
            X509Certificate2 cer = new X509Certificate2(PrivateCertificatePath, PrivateCertificatePassword,
                                                    X509KeyStorageFlags.DefaultKeySet);

            RSACryptoServiceProvider pri = (RSACryptoServiceProvider)cer.PrivateKey;
            RSACryptoServiceProvider pub = GetRsaPublicKey();

            byte[] text = Encoding.ASCII.GetBytes(src);
            byte[] sig = pri.SignData(text, "SHA1");           
            string sighex = Tools.toHex(sig);
            return sighex;
        }

デバッガでみると、

sighex = "36C2D32345F0ED5EE0BEEC5687B732C1181FFF84AC89B99525B28F3154847F2EF9969DE0B5C9D569F4CAD19E6C975668DE8E416E9036D5B3F5DB6867178A1F05AA58148D947A77924E753725AB37408613DFA5CB9B5D7F8B8603BCEE13FB3763EBD63DC4F2C7ABB96DFB8A2D1D38E064B39D407EA031868F84BD1A35012C0464"

で同じようです。

カテゴリー: 未分類 パーマリンク

コメントを残す

以下に詳細を記入するか、アイコンをクリックしてログインしてください。

WordPress.com ロゴ

WordPress.com アカウントを使ってコメントしています。 ログアウト / 変更 )

Twitter 画像

Twitter アカウントを使ってコメントしています。 ログアウト / 変更 )

Facebook の写真

Facebook アカウントを使ってコメントしています。 ログアウト / 変更 )

Google+ フォト

Google+ アカウントを使ってコメントしています。 ログアウト / 変更 )

%s と連携中