2012-01-27 11 views
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}) 
+2

八重奏のシーケンスの他に何かのsha1ダイジェストのような概念はありません。あなたは本当に何をしようとしていますか? – SingleNegationElimination

+0

これは私が何をしようとしているのですが、この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

+0

新しいコードを回答に追加してください。コメント形式では使えません。 – SingleNegationElimination

答えて

0

あなたの質問に対する答えはいいえ、あなたは整数ではなく文字列のハッシュを計算することができます。

hashlib.sha1(str(1234)).digest() 

整数のハッシュを文字列として取得するには、次のようにしてください。

関連する問題