2012-07-25 80 views
0

可能重複:
Convert a string to number and back to string?加密字符串到數字在PHP

我有一個字符串,它看起來像:

AhgRtlK== 

,我需要能夠加密並將此字符串解密爲可能如下所示的數字:

1275653444 

這就像手機充電信貸(有些東西像)

編輯: 我想創建像移動電荷信用一些事情,包括信用卡 的價值,但加密

+1

你的意思是,你有一個字符串base64編碼,你想解碼? – Peon 2012-07-25 11:09:21

+0

不,我的意思是我有字符串,我想加密它,但在數字 – 2012-07-25 11:10:50

+1

你基本上正在尋找一個從基礎64到基數10的基礎轉換算法?問題很不清楚...... – deceze 2012-07-25 11:11:31

回答

3

我不認爲你理解問題的程度足以提出正確的問題。就我理解你的意思而言,這並不是很好的想法。假設一些代碼意味着500美元的信用。那麼,總是的意思是,今天,明天和永遠,即使我花了一些它。

所以你不要想要解密爲值的代碼。您需要識別具有餘額的唯一帳戶的代碼。 (有很好的算法可以做到這一點,它們通常基於HMAC。)

+0

哇。我永遠無法猜測OP要使用憑單系統。如果它是正確的,真棒抓住。 – 2012-07-25 11:46:49

+0

那請問是什麼方向:D – 2012-07-25 11:47:34

+0

@SamyMassoud:這取決於你的實際需求,你永遠不會說。但基本思想是這樣的:你必須有一個數據庫。否則,沒有辦法跟蹤哪些代碼已被使用。所以你不妨使用卡片的隨機數字並在數據庫中輸入餘額。如果您有要求隨機數字不符合,那麼您可能需要一些其他解決方案。但是如果不知道你的實際需求,我們就無法分辨。 (四分之三的工作可能會弄清楚你的要求實際上是什麼,要做到這一點很重要。) – 2012-07-25 12:14:05

3

你可以使用ASCII值的字符串轉換成一個數字:

$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 2012-07-25 11:24:51

+0

@deceze你應該如何將大字符串轉換爲數字呢?他從來沒有說他需要扭轉它。 – Sietse 2012-07-25 11:27:01

+0

1)如果你只是把最後的演員丟到了一個'int',它會解決這個問題。 2)*「我需要能夠加密和解密」* – deceze 2012-07-25 11:28:30