有很多從0開始的號碼-.... ,我們不想向任何人展示這個訂購的ID,我們必須給某個地方唯一的號碼,所以 如何將號碼編碼爲另一個號碼。如何將數字加密到另一個數字?
並且每個編碼數字只表示一個數字。就像加密而不是哈希。 我們還需要獨特的手段,如果56給842則沒有其他人應該給842
這裏類似quetions爲C# Encrypt a number to another number of the same length 但如何在PHP
感謝做。
有很多從0開始的號碼-.... ,我們不想向任何人展示這個訂購的ID,我們必須給某個地方唯一的號碼,所以 如何將號碼編碼爲另一個號碼。如何將數字加密到另一個數字?
並且每個編碼數字只表示一個數字。就像加密而不是哈希。 我們還需要獨特的手段,如果56給842則沒有其他人應該給842
這裏類似quetions爲C# Encrypt a number to another number of the same length 但如何在PHP
感謝做。
在PHP的情況下,您可以使用base64_encode & base64_decode。
例如:
<?php
$order_id = "123";
$enc=base64_encode($order_id);//MTIz
echo base64_decode($enc);//123
?>
我不知道爲什麼人們通過發明自己的加密系統,其可以是不好的或不必要過於複雜的事情。
PHP爲您提供了mcrypt:http://de3.php.net/mcrypt 以密碼強大的方式加密和解密某些東西的好方法。
注:Base64是不是一個很好的解決方案,因爲這是不加密
編輯:同樣依靠一些用戶創建加密不建議使用。它沒有很好的測試,並部分依靠默默無聞的安全。 雖然mcrypt的需要一些調用的API的mcrypt它允許您使用強加密系統,如MCRYPT_RIJNDAEL_256
,MCRYPT_TWOFISH256
等
我不知道您的安全要求什麼,但NEVER重新發明輪子。當你在這樣的事情中犯了錯誤,你將不會注意到,因爲惡意用戶不會告訴你,而只是利用你的系統。
請參閱https://security.stackexchange.com/questions/18197/why-shouldnt-we-roll-our-own
是否可以用mcrypt來做到這一點?好吧,讓我讀一下關於mcrypt –
我同意你的意見..我不想讓我自己多數民衆贊成爲什麼我問這裏....因爲我知道我可以偷偷做出像(($我* 454)-475)等等等,但我想要堅強和可靠的東西......我只是討厭重新發明輪子 –
我想'MarcB'給出的答案是在PHP中。 –
如果你確實需要一些唯一的數據庫ID,然後創建一個唯一的ID,通過sha256運行一次,並將其用作主鍵或其他索引列,通過它檢索。無論如何,你可能不需要扭轉這個數字。你只需要讓它變得不可預測。哈希碰撞在你的情況下是可以忽略的(就我看到你的情況而言)。如果這對你來說確實是一個很難的要求,你需要一些數字表示 – Samuel