3

私はMongoDBが初めてです。とにかく、暗号化され、base64 でエンコードされたデータを保存しようとしています。

data = b64encode(self.iv + AES.new(self.key, self.mode, self.iv).encrypt(self.pad2(self.data)))
self.db.users.insert({'data':data})
self.db.users.find({'data':data})

挿入は正常に機能しますが、データを検索すると 0 の結果が返されます。MongoDB シェルはこれを出力します:

db.users.find()
{ "_id" : ObjectId("50f848dc34257b0d5e3d9b29"), "data" : BinData(0,"R1VhaHl3MGpLSStkY0lWU255ZjhneGp2RWk3cEk3MnFRTCsxOTcyOC82WT0=")}

BinData ファイルタイプでドキュメントを見つけるにはどうすればよいですか? 私は bson.binary.Binary を試しましたが、運がありません。

4

1 に答える 1

4

これがまだ必要かどうか (またはバイナリから base64 からバイナリに変換する理由) はわかりませんが、これが役立つことを願っています:

import base64
import pymongo
from pymongo import binary
# if pymongo version >= 1.9, use the following instead
# from bson import binary

con = pymongo.Connection()
b64 = base64.b64encode("ajskldfjaklsdjfklasdjf")
bi = binary.Binary(b64)
con.test.test.insert({'foo': bi})
con.test.test.find_one({'foo': bi})

出力:

{
    u'_id': ObjectId('50f99b4a9f956a1924000000'),
    u'foo': Binary('YWpza2xkZmpha2xzZGpma2xhc2RqZg==', 0)
}
于 2013-01-18T19:06:35.640 に答える