2012-07-25 2 views
0

가능한 중복 : 나는 암호화 할 수 있어야암호화 문자열

AhgRtlK== 

과 :
Convert a string to number and back to string?

나는처럼 보이는 문자열을 이 문자열을 다음과 같은 숫자로 암호 해독하십시오.

1275653444 

그것은

EDIT 전화 요금 신용 (그런 어떤 것을)처럼 : 나는 신용 카드 의 값을 포함하는 모바일 충전 신용과 같은 몇 가지 일을 만들 하지만 암호화

+1

디코딩하려는 base64로 인코딩 된 문자열이 있습니까? – Peon

+0

아니요. 나는 문자열을 가지고 있으며 암호화하고 싶지만 숫자는 숫자로 나타냅니다. –

+1

기본적으로 기본 64에서 기본 10까지의 기본 변환 알고리즘을 찾고 계십니까? 질문이 꽤 명확하지 않습니다 ... – deceze

답변

3

올바른 질문을하기에 충분할 정도로 문제를 이해한다고 생각하지 않습니다. 당신이 말하는 것을 이해하는 한도 내에서, 그것은 잘 생각하지 못합니다. 일부 코드는 500 달러의 크레딧을 의미한다고 가정합니다. 음, 은 항상을 의미합니다. 오늘, 내일, 그리고 영원히, 심지어 그 중 일부를 보냈다 고해도.

그래서 을 입력하지 마십시오.은 암호 해독 코드가 필요합니다. 잔액이있는 고유 계정을 식별하는 코드가 필요합니다. (이를 수행하는 훌륭한 알고리즘이 있으며 일반적으로 HMAC를 기반으로합니다.)

+0

와우. 나는 OP가 바우처 시스템을 원한다고 추측 할 수 없었을 것입니다. 그것이 맞다면, 굉장한 잡기. –

+0

그래서 방향은 무엇입니까 : D –

+0

@SamyMassoud : 이것은 당신의 실제 요구 사항에 달려 있습니다. 그러나 기본적인 생각은 이것입니다 : 어딘가에 데이터베이스가 있어야합니다. 그렇지 않으면 어떤 코드가 사용되었는지 추적 할 방법이 없습니다. 따라서 카드에 임의의 숫자를 사용하고 데이터베이스에 잔액을 입력 할 수도 있습니다. 임의의 숫자가 충족되지 않는 요구 사항이 있으면 다른 해결책이 필요할 수 있습니다. 그러나 우리는 귀하의 실제 요구 사항을 모른 채 말할 수 없습니다. (작업의 4 분의 3은 요구 사항이 실제로 무엇인지 알아낼 수 있습니다. 바로 얻는 것이 중요합니다.) –

3

당신은 할 수 있습니다 당신이 사용할 수있는 그것을 다시 변환하려면

$integer = ''; 
foreach (str_split($string) as $char) { 
    $integer .= sprintf("%03s", ord($char)); 
} 
return $integer; 

: : 문자열을 숫자로 변환하는 아스키 값을 사용

$string = ''; 
foreach (str_split($integer, 3) as $number) { 
    $string .= chr($number); 
} 
return $string; 
+0

1) 큰 문자열에는 작동하지 않습니다. 2) 안정적으로 되돌릴 수 없습니다. – deceze

+0

@deceze 큰 문자열을 어떻게 숫자로 변환해야합니까? 그리고 그는 그것을 뒤집을 필요가 있다고 결코 말하지 않았습니다. – Sietse

+0

1) 'int'에 대한 최종 캐스트를 잃는다면, 그 문제를 해결할 수 있습니다. 2) * "암호화하고 해독 할 수 있어야합니다"* – deceze