2011-09-17 5 views
-5

100 자리 숫자 값을 10 자리 숫자로 변환하거나 그 반대로 변환하고 싶습니다. 그래서 인코딩 된 번호를 모바일 사용자에게 전달하고 돌아 오는 과정에서 다시 100 자리 숫자를 만들 수 있습니다. PHP, .NET 또는 JS에서 사용하고 싶습니다.정수로 큰 정수로 숫자를 인코딩하는 수학 알고리즘이 필요합니다.

하지만 그 전에 알고리즘이 필요합니다.

구현하기 위해 간단한 나누기 - 빼기 및 덧셈 - 곱하기 옵션을 사용하는 몇 가지 아이디어가 있습니다. 하지만 그보다 더 안전한 것이 필요합니다.

+0

안전합니까? 그렇다면 실제로 암호화하는 것이 아니라 인코딩하는 것입니까? 그리고 물론 이것은 10 자리 숫자마다 100 자리 숫자가 많이 있기 때문에 불가능합니다. 큰 정수가 될 수있는 것에 대해 엄격한 제약이 있습니까? 10 자리의 정수를 여러 개 사용할 수 있습니까? – Jems

+0

10 자리 또는 10 바이트를 전달할 수 있습니까? – jancha

+0

음 ... 숫자 집합에서 최대 100digits까지의 십진수 매핑이 10 자리 이하의 숫자로 매핑되어 있지 않으므로 흥미 롭습니다. – Carsten

답변

0

100 자리 숫자에 가능한 값이 10 000 000 이상있는 경우 해당 숫자를 10 자리 숫자로 매핑하고 신뢰할 수있는 원래 숫자로 다시 매핑 할 수 없습니다.

0

100 자리 숫자입니다.이 숫자는 기본 10 자리라고 가정합니다. 컴퓨터에서 숫자를 말하면 '숫자'로 말하면 거의 무의미합니다.

실제로 100 비트 정수를 의미하는 경우이 값은 단일 64 비트 정수 (범위 +/- 9,223,372,036854775808)에 쉽게 맞지 않습니다. 그런 다음 질문을 모두 잘 말하지 않았습니다. 그리고 압축 또는 인코딩의 양으로 인해 10 비트를 초과하지 않고 100 비트를 표현할 수 있습니다.

10 진수가 100 인 경우 bignum을 다루므로 바이트로 처리하고 bignum 라이브러리를 사용해야합니다.

100 진법 10 진수는 여전히 512 비트 미만입니다.

+0

@ tom으로 변환하는 것입니다. 중간 문장을 어리둥절하게 만들지 않습니다 :) – IanNorton

-1

100 자리 숫자가 밑수 10이라고 가정하면 내 수학이 잘못되지 않았다면 동일한 숫자를 나타 내기 위해 10 개의 기본 100 자리가 필요합니다. 따라서 0-9의 문자 만 사용하는 대신 대문자와 소문자 등 다른 글자를 포함하도록 문자를 확장하여 100 자의 알파벳을 완성해야합니다. 좋아요, 수학 문제가 잘못되었으므로 무시하되 다음 단락을 고려하십시오.

또 다른 생각은 해시 알고리즘을 사용하여 100 자리 숫자에서 10 바이트 해시를 추출하고이를 서버 측 데이터베이스 (해시 테이블)에서 키로 사용하는 것입니다. 인코딩/디코딩없이 모바일 클라이언트에 키를 보내면 모바일 클라이언트는이 키를 사용하여 서버에서 100 자리 숫자를 가져옵니다.

+0

10 진수 100 자리는 20 진수 10 자리 만 나타냅니다. 기본 10^10 자리가 필요합니다. –

2

당신이 원하는 것은 불가능합니다. 10^10 개의 상자에 10^100 개의 항목을 비둘기하려고합니다. 일부 상자는 두 개 이상의 항목을 가져 오므로 원래 항목으로 되돌릴 수 없습니다.

100 자리의 기본 -10 숫자를 56 자리의 기본 62 숫자로 인코딩 할 수 있습니다 (대문자 및 소문자 로마자와 숫자 0-9 사용). 여기서 수학은 100 * log(10)/log(62)입니다.

일부 알파벳에서 10 자 미만을 사용하여 인코딩하려면 ~ 2^34 기호가있는 알파벳이 필요합니다. 여기서 수학은 100 * log(10)/log(number of symbols)입니다. 좋은 결과 내길 바랄 게.

+0

십진수 10 자리를 1 (= 100-> 10)으로 인코딩하는 것이 직관적으로 분명합니다. 알파벳이 10000000000 개 필요합니다. –

+0

0-9 자리 (정수) 이외의 다른 숫자는 사용할 수 없습니다. 이 번호를 암호화하려고합니다. 서버를 통해 모바일 응용 프로그램에 전달하므로 암호화가 필요합니다. 응답뿐만 아니라 암호 해독 모드에서도 필요합니다. –

+0

@Shail Patel : 숫자 '0 - 9'만 사용할 수 있다는 제약 때문에 문제가 해결되지 않습니다. – jason