2011-01-03 4 views
0

어떻게 파이썬이 1099511627776 비트 크기 (예 : 137GB)의 크기 순서로 작업 할 수 있습니까? 나는 이것을 구현할 필요가있는 것들을 (또는 당신이 그것을 할 수있는 더 좋은 방법을 제안 할 수 있다면, 방법을 바꿀 것이다). 분명히, pgp의 새로운 길이 유형은 2 대신에 3 개의 섹션을 갖습니다. 이제는 길이 유형, 값의 길이 유형 및 길이입니다. 길이 유형은 2 비트이며, 이는 191 바이트, 8383 바이트, 4294967296 바이트 또는 부분 길이로 변환됩니다. 길이는 바이트 단위로 인코딩됩니다. 어떻게해도 값이 4294967296 바이트보다 크지 않은지 검사 할 수 있는데, 위선적 인 질문이 없다면 1 << (4294967296 << 8)일까요? 너무 길어서 오래 적응할 수 없습니다.어떻게 파이썬에서 매우 큰 값을 처리합니까?

+4

... 예. 이 크기의 "숫자"를 다루는 것은 제정신이 아니고 실용적이거나 권장되지 않습니다. 조각으로 분해해야합니다 (예 : 50GB 데이터베이스는 일반적으로 한 번에로드되지 않습니다. –

+0

당신은 pgp가 어떻게하는지 알고 있습니까? – calccrypto

+0

@calcrypto 만약 거대한 숫자를 다루는 것이라면, http://primes.utm.edu/largest.html에 나와있는 것처럼 "compacted"형태로 그것을 저장한다고 상상할 수 있습니다 :-) 소스를 사용할 수 있습니까? 비록 소수를 보면 ... 최대 규모는 단지 "만"12 백만 자릿수입니다. –

답변

1

세 인수 형식이 pow()입니다.

+0

무엇? 'pow (2, 4294967296 << 8)? 문제는 가치를 계산하지 않습니다. 문제는 값을 저장하는 것입니다. 그리고 나는 mod 번호를 가지고 있지 않다. – calccrypto

+2

@calccrypto : 나는 이그나시오가 의미하는 바가 수학에서와 같이 10을 쓰지 않는다고 생각한다. 0, 1000 zero 당신은 방금 10^1000을 써서 숫자가 될 수있다. 이 양식에 저장 :) 그리고 이그나시오가 제공 한 패턴이 계산을 수행하는 데 매우 도움이 될 수 있다고 생각합니다. RSA 알고리즘을 살펴보고 모든 것이 산술, 특히 모듈러스 연산자를 기반으로한다는 것을 확인하십시오. Ignacio +1. – mouad

1

GMPY과 같은 큰 번호의 라이브러리를 사용하십시오.

+1

좋은 링크. 그러나 이것은 137GB의 데이터를 "요구하는"숫자를 다루는 문제를 "해결"하지 않습니다 ;-) –

2

길고 딱 맞을뿐만 아니라 어떤 컴퓨터의 메모리에도 적합하지 않습니다. 나는 네가 뭔가 잘못 이해했다고 생각해.

제가 이해하는 한, 가장 큰 키 값은 4,294,967,295 바이트입니다. 그것은 137GB가 아닌 4GB입니다. 이 키를 하나의 숫자가 아니라 바이트 문자열로 메모리에 보유합니다. 그래서 나는 당신이 137 GB의 큰 숫자를 어디에서 얻을 수 있는지 모른다.

PGP가이를 요구하면이를 구현할 수 없습니다. 구현이 있기 때문에, 그것이 어떻게 이루어 졌는지는 확실하지 않습니다.

(또한, 파이썬에 대한 PGP 모듈이 확신 해요,하지만 당신은이 일을하는 경우 당신은 연습하고 다음 배우고, 그것을 유지하려는 있기 때문에, 그것을 필요가 있기 때문에!)

+1

4GB. 죄송합니다. 나는 울프 람 알파에서 이상한 것을했을 것입니다. 예 메신저 rfc4880 한 번에 하나의 무작위 섹션을 통해 독서.어떤 주어진 명령을 사용하는 것보다 장면 뒤에 무엇이 있는지 알고 자하는 사람의 유형 – calccrypto

0

나는 RFC4880 (2007 년 11 월)을 다르게 해석합니다. 섹션 3.2에서는 여러 정밀도 정수를 2 옥텟 길이로 설명하므로 가장 큰 크기는 64KB입니다. 섹션 4.2.2는 설명하는 스케일의 새로운 패킷 형식과 문서 번호를 설명합니다. 그러나 패킷 형식은 다중 정밀도 정수 형식과 동일하지 않습니다. 다른 방식으로 해석하는 경우 읽고있는 RFC의 정확한 섹션으로 질문을 업데이트하십시오.