2016-08-24 2 views
0

암호화 체계에서 비트를 사용해야하지만 변수와 함수를 BitVector (bitstring/int/textstrings = "")로 변환하면 길이가 길어질 때 매우 긴 비트 벡터가됩니다 수 천명. 이제는 이러한 BitVectors에 대한 암호화와 조작이 느려집니다. 어떻게 이것을 극복 할 수 있습니까? ~ 3000 개 비트를 예를 들어, self.bc.encrypt(msgxored, key) 만 ~ 300 비트이지만, encr1 = BitVector.BitVector(textstring = self.bc.encrypt(msgxored, key))이다BitVector 성능 문제

+0

다음과 같이 사용할 수 있을까? 또한 * "성능"*은 일반적으로 공간 기반 측정이 아닌 시간 기반 측정을 위해 예약되어 있습니다. 시간이나 공간을 의미합니까? –

+0

나는일지도 모른다. ... 나는 시간을 의미한다! ~ 3000 비트이기 때문에 오래 걸립니다. 작은 비트로 처리 할 때 더 빨라집니다 (예를 들어 또 다른 암호화 체계는 더 작고 더 빨라집니다) – user65165

답변

0

귀하의 질문은하지 않습니다

msg = BitVector.BitVector(textstring=message)^h1 
    msgxored = msg^h1 

EDIT1가 : :(방법

예를 들어 나는 BitVector를 사용하고 있습니다! 많은 정보. 그럼에도 불구하고, 문서는 당신이 당신의 BitVector의 크기를 설정할 수 있다고 말한다.

bv = BitVector(intVal = 0, size = 8) 

희망하는 데 도움이!

+0

"제공된 크기가 intVal에 대해 가능한 가장 짧은 비트 벡터를 만드는 데 필요한 것보다 작은 경우 예외가 발생합니다." – user65165

+0

또한 size는 intst에만 해당하며 bitstring 및 textstring에는 해당되지 않습니다. – user65165

+0

이 경우에는 관계가 없지만 xor xor (제거 xor)는 BItVector에서 어떻게 작동합니까? 나는 너무 도움이되는 무엇이든을 온라인으로 찾아 낼 수 없었다 – user65165

1

이것은 뻔뻔한 자기 광고이지만 https://pypi.python.org/pypi/BytesOp을 정확하게 만들었습니다.

당신은 당신이 비트와 바이트를 혼합하지 않을 것을 확신이

from BytesOp import op_xor 
msg=b"asdf" 
h1=b"1234" 
msgxored=op_xor(msg,h1) 
print(msgxored,op_xor(msgxored,h1)) 
+0

좋은 그것이 좋은 경우에 어이, 좋은 경우에) 이렇게 이것은 더 빠른가 또는 조금을 압축합니까? – user65165

+1

버퍼에서 원시'char' 배열로 작동하므로 전혀 압축 할 필요가 없습니다. 바이트와 ​​같은 객체를 넣으면 새로운 바이트 문자열을 얻습니다. 당신은 BitVector의 단순한 객체 아이템을 가지고 있지는 않지만 (단순한 [175 라인의 C] (https://github.com/janbrohl/BytesOp/blob/master/bytesop.cpp) 만) - 분명히 가장 빠르지는 않지만 가능한 구현은 최적화를위한 여지가별로 없다. (나는 벤치 마크가 없음) – janbrohl

+0

시도해보고 있습니다 :) – user65165