1
hashlib.sha1(int)で整数を取る方法。 Python Sha1は整数を取るか
import hashlib
import socket
import struct
class blommy(object):
def __init__(self):
self.bitarray= [0]*2048
def hashes(self,ip):
#convert decimal dotted quad string to long integer"
intip= struct.unpack('>L',socket.inet_aton(ip))[0]
index = [0, 1]
hbyte = hashlib.sha1(intip) # how to take sha1 of integer??
index[0] = ord(hbyte[0])| ord(hbyte[1])<< 8
index[1] = ord(hbyte[2])| ord(hbyte[3])<< 8
のpythonに、このCコードを変換する必要が... iは整数取るdoest hash.sha1で今整数としてそれを変換文字列としてIPを取っていたのコードを参照してください。上記のコードの一部をアドバイスしてください。私はintとして私が取る場合私はsha1を計算することはできません+ sha1よりもソケットを使用してIPを変換する場合でも、それを提案を受け入れていけない?以下のコメントを参照してください
//fixed parameters
k = 2
m = 256*8
//the filter
byte[m/8] bloom ##
function insertIP(byte[] ip) {
byte[20] hash = sha1(ip)
int index1 = hash[0] | hash[1] << 8 # how to in python?
int index2 = hash[2] | hash[3] << 8
// truncate index to m (11 bits required)
index1 %= m ## ?
index2 %= m ## ?
// set bits at index1 and index2
bloom[index1/8] |= 0x01 << index1 % 8 ## ??
bloom[index2/8] |= 0x01 << index2 % 8 ## ??
}
// insert IP 192.168.1.1 into the filter:
insertIP(byte[4] {192,168,1,1})
八重奏のシーケンスの他に何かのsha1ダイジェストのような概念はありません。あなたは本当に何をしようとしていますか? – SingleNegationElimination
これは私が何をしようとしているのですが、このCコードを見ることができますか?パラメータ //フィルタ k = 2 m = 256 * 8 //フィルタ バイト[m/8]ブルーム##この部分は何ですか? function insertIP(byte [] ip){ byte [20] hash = sha1(ip) int index1 = hash [0] |ハッシュ[1] << 8 int index2 =ハッシュ[2] | hash [3] << 8 //インデックスをmに切り捨てる(11ビットが必要) index1%= m ##? index2%= m ##? // index1とindex2のビットを設定する ブルーム[index1/8] | = 0x01 << index1%8 ## ?? ブルーム[インデックス2/8] | = 0x01 <<インデックス2%8 ## ?? } // IP 192.168.1.1をフィルタに挿入します。 insertIP(byte [4] {192,168,1,1}) – Shazib
新しいコードを回答に追加してください。コメント形式では使えません。 – SingleNegationElimination