スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。



  

PtyhonでGooglePlayのレシート検証

クライアントから送信されたレシートをサーバー側で検証する方法について情報があまりなかったため、メモしておく



下記検証するには、前提として「pycrypto」をインストールしておく必要がある。

from Crypto.Signature import PKCS1_v1_5
from Crypto.Hash import SHA
from Crypto.PublicKey import RSA
import base64

PUBLIC_KEY="""-----BEGIN PUBLIC KEY-----
<GooglePlayで取得した公開鍵>
-----END PUBLIC KEY-----"""

def verity(receipt,signature):
    # レシートのSHAハッシュ化
    hash = SHA.new(receipt)
    # 公開鍵読み込み
    pub_key=RSA.importKey(PUBLIC_KEY)
    # 検証用データ生成
    verifier = PKCS1_v1_5.new(pub_key)
    # 署名の復号
    signature = base64.decodestring(signature)
    # 検証
    return verifier.verify(hash, signature)#True or False



  

Pythonのリスト型のソート

Pythonでリスト型のソート方法を忘れてしまうことがあるため、メモしておく。



主にsorted()関数を使用してリスト型のソートをすることができます。

他にも組み込みメソッドlist.sort()がありますが、
リスト型のみに適用される且つ元のリストオブジェクトの順序を入れ替えてしまうなど汎用性が低く不便なため、使用する機会が少ないのではないでしょうか。
※順序を入れ替える前のリストオブジェクトが不要な場合には、わずかですがlist.sort()の方が処理速度は速くなります。

sorted()関数を使用してのソート方法は下記のような形で行います。

>>> a=[5,2,3,1,4,6]
>>> sorted(a)
[1,2,3,4,5,6]

>>> b=[(“bca”,”50”),(“abc”,”100”),(“bac”,”15”)]
>>> sorted(b)
[(“abc”,”100”),(“bac”,”15”),(“bca”,”50”)]

上記をみてわかるように変数bは各タプルの0番目の要素で並べ替えが行われています。
また、0番目以外や要素を指定してソートを行いたい場合、
keyパラメータを使用することで柔軟なソートを行うことができます。
例えば、変数bの1番目の要素でソートを行う場合、

>>> b=[(“bac”,”50”),(“abc”,”100”),(“bac”,”15”)]
>>> sorted(b,key=lambda x: int(x[1]))
[(“bac”,”15”),(“bac”,”50”),(“abc”,”100”)]

となります。
ちなみにint(x[1])を指定しない場合は、文字列でソートされるため、最初のソートと同じ形になります。

昇順と降順の指定には、reverseパラメータの真偽値で判断します。
例えば、下記のようになります。
>>> a=[5,2,3,1,4,6]
>>> sorted(a,reverse=True)
[6,5,4,3,2,1]


  

Pythonの値渡し

Pythonの代入は間違えやすいのでメモしておく。
※他の言語と切り替えながら開発している人は要注意。



Pythonの代入は基本参照渡しになってしまうため、
そのまま代入を行うと必ず参照渡しになります。
ex)
>>>a=[1,2,3]
>>>b=a
>>>a.remove(3)
>>>a
[1,2]
>>>b
[1,2]

上記のように参照渡しではなく、中身を複製したい場合に下記3種類の方法で複製することができます。
ex)
>>>a=[{“key”: 1}]
>>>b=list(a)

>>>b=a[:]

>>>from copy import copy
>>>b=copy(a)

ただしリストの中身が辞書型のように参照先のあるオブジェクトの場合、上記方法ではリスト自体はコピーできますが、中身の辞書型の参照先ごと渡されるため辞書型の中身は参照渡しのままになります。

辞書型の中身ごと複製したい場合は、copyモジュールのdeepcopy関数を使用します。
>>>a=[{“key1”: 1},{“key2”: 2}]
>>>from copy import deepcopy
>>>b=deepcopy(a)


  
検索フォーム
プロフィール

サトリヒロシ

Author:サトリヒロシ
ビジネスを重視した企画を支援したいエンジニアが、何かを書こうとするブログです。

サトリ潜伏先
サトリ倉庫

WEB関連の技術で調査リクエストがあればご連絡ください。

カレンダー
06 | 2017/07 | 08
- - - - - - 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 - - - - -
カテゴリ
最新記事
最新コメント
最新トラックバック
月別アーカイブ
RSSリンクの表示
リンク
QRコード
QRコード
FC2カウンター
スポンサードリンク
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。